[英]MySQL LEFT JOIN filtering rows where NULL
我正在嘗試返回用戶是否收藏的商品。 我有MySQL語句:
SELECT *,`user_choice`.fav FROM `items`
LEFT JOIN `user_choice` ON `user_choice`.item_id = `items`.item_id
這將返回完整的結果集,其中user_choice
.fav等於0、1或NULL
但是,我只想顯示給定用戶的user_choice
.fav(無論該值可能是多少),因此我為該用戶添加了WHERE
語句,如下所示:
SELECT *,`user_choice`.fav FROM `items`
LEFT JOIN `user_choice` ON `user_choice`.item_id = `items`.item_id
WHERE `user_choice`.user_id=xx
當我添加此WHERE語句時,它將過濾掉user_choice
.fav為NULL(即不是1或0)的第一個語句的所有結果。 我如何獲取它以返回值,即使它們為NULL
示例數據:
items
1,ITEMNAME
2,item2name
3,item3name
user_choice
1,1,1
1,3,0
0、1不被視為NULL值,因此您的WHERE語句排除了它們。 您需要按如下所示在您的WHERE子句中添加另一個OR:
SELECT *,`user_choice`.fav FROM `items`
LEFT JOIN `user_choice` ON `user_choice`.item_id = `items`.item_id
WHERE `user_choice`.user_id=xx OR `user_choice`.user_id IS NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.