SQL 查询根据一个值排除项目

标签 sql mysql

我从一个表中提取项目列表,基于它们包含在另一个表中,如下所示:

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/

相关文章:

mysql - SQL : Multiple left joins with similar tables

java - SQL DB 只保存一行?

c# - 如何在 SQL Server 2008 中的表的 2 列中设置身份规范 YES

mysql - Laravel 5.1 的表锁定问题

mysql - 使用外键从多个表中顺序检索数据

sql - 这如何不使 varchar2 效率低下?

sql - MySQL:如何计算特定日期后的周数?

PHP/MySQL 无法插入

c# - 使用 C# 在 Mysql 中使用回滚

mysql - 在 mysql 中更新表 split()