簡體   English   中英

MySQL LEFT JOIN過濾行為NULL

[英]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

item_id | 項目名稱

1,ITEMNAME

2,item2name

3,item3name

user_choice

user_id | item_id | 最愛

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM