返回左表中的所有产品以及评级表中的结果,无论给定用户是否对其进行评级

时间:2014-04-01 07:26:44

标签: mysql sql

我在选择表中有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这会返回正确的结果数,但并不是所有用户的评分或评论都是由这个单独控制的。有没有办法定义返回分组结果时将选择的用户?还有其他建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想让WHERE语句包含两个单独的条件,则需要在括号中包围第二个语句;否则SQL会将每个运算符视为自己的条件:

WHERE user_id = 1 OR 
(user_id <> 1 AND rating ID NULL and comment IS NULL)