我从一个表中提取项目列表,基于它们包含在另一个表中,如下所示:
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)
关于SQL 查询根据一个值排除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/426128/