我试图返回用户是否喜欢某个项目。我有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 :(得分:2)
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