我正在从一个表中提取项目列表,基于它们被包含在另一个表中,如下所示:
select fruit.id, fruit.name from fruit, fruit_rating where fruit_rating.fruit_id=fruit.id group by fruit.name;
这很好 - 它基本上产生了一个被某人评定的所有水果的清单.但现在,我想排除一个特定用户评价的所有水果,所以我尝试了这个:
select fruit.id, fruit.name from fruit, fruit_rating where fruit_rating.fruit_id=fruit.id and fruit_rating.user_id != 10 group by fruit.name;
没关系,但不太对劲.它显示了所有被10岁以外的人评定的水果,但如果用户1和10都评价相同的水果,它仍然显示一个.任何人都可以告诉我如何构建一个查询,只显示用户10未评级的水果,无论其他人对它们进行了评分?
... WHERE fruit_rating.fruit_id=fruit.id and fruit.id not in (select fruit_rating.fruit_id from fruit_rating where fruit_rating.user_id = 10)