我在选择表中有332个产品,并且想要返回332个结果。在匹配表中,每个产品已被给定用户评级或未评级。这些是使用以下查询的两个表的结果
SELECT a.product_id,a.brand,b.user_id,b.rating,b.comment
FROM selection a
LEFT JOIN matching b ON a.product_id = b.product_id
product_id brand user_id rating comment
1 A & P 30 4.5 NULL
1 A & P 30 4.5 NULL
1 A & P 52 1 NULL
2 A & W 1 3 good flavor
2 A & W 24 5 NULL
我想返回所有带有评级和评论的产品,其中user_id = 1,然后是用户1未对产品评分或评论的其余产品。我试过了
WHERE user_id = 1 OR
user_id <> 1 AND rating ID NULL and comment IS NULL
这将返回与WHERE user_id = 1
相同的内容。我也试过GROUP BY product_id
这会返回正确的结果数,但并不是所有用户的评分或评论都是由这个单独控制的。有没有办法定义返回分组结果时将选择的用户?还有其他建议吗?谢谢!
答案 0 :(得分:0)
如果您想让WHERE语句包含两个单独的条件,则需要在括号中包围第二个语句;否则SQL会将每个运算符视为自己的条件:
WHERE user_id = 1 OR
(user_id <> 1 AND rating ID NULL and comment IS NULL)