亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL與where子句連接

MySQL與where子句連接

哆啦的時光機 2019-08-30 16:09:35
我有兩張桌子想加入。我想要類別表中的所有類別以及category_subscriptions表中用戶訂閱的所有類別?;旧线@是我目前的查詢:SELECT *FROM categoriesLEFT JOIN user_category_subscriptions      ON user_category_subscriptions.category_id = categories.category_id這工作正常,但我想在查詢的末尾添加一個where子句,然后基本上使它成為內部/ equi連接。   SELECT *    FROM categories    LEFT JOIN user_category_subscriptions          ON user_category_subscriptions.category_id = categories.category_id    WHERE user_category_subscriptions.user_id = 1如何僅使用一個查詢獲取特定用戶訂閱的所有類別以及所有類別?category_id是類別表和user_category_subscriptions中的鍵。user_id駐留在user_category_subscriptions表中。謝謝
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

你需要把它放在join條款中,而不是where:


SELECT *

FROM categories

LEFT JOIN user_category_subscriptions ON 

    user_category_subscriptions.category_id = categories.category_id

    and user_category_subscriptions.user_id =1

看一下inner join,把一個條款放在join或where等同于。但是,有了outer join它們,它們就大不相同了。


作為join條件,您指定要加入表的行集。這意味著,它計算user_id = 1第一,并采取子集user_category_subscriptions用user_id的1加入到所有的行categories。這將為您提供所有行categories,而只有categories此特定用戶訂閱的行將在user_category_subscriptions列中包含任何信息。當然,所有其他的categories將被填充null在user_category_subscriptions列。


相反,where子句執行連接,然后減少行集。因此,這會完成所有連接,然后消除所有user_id不相等的行1。你得到一個效率低下的方法inner join。


希望這有幫助!


查看完整回答
反對 回復 2019-08-30
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

試試這個


  SELECT *

    FROM categories

    LEFT JOIN user_category_subscriptions 

         ON user_category_subscriptions.category_id = categories.category_id 

   WHERE user_category_subscriptions.user_id = 1 

          or user_category_subscriptions.user_id is null


查看完整回答
反對 回復 2019-08-30
  • 2 回答
  • 0 關注
  • 656 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號