SQL:如何只选择不包含特定值的组?

标签 sql group-by

假设我有一张 table :

Restaurant locations: 

RESTAURANT_NO | RESTAURANT_LOCATION
-----------------------------------
1             |            City A
1             |            City B
2             |            City A
2             |            City B
2             |            City C
3             |            City C
4             |            City A
4             |            City B

我如何能够将它们组合在一起并且只选择
RESTAURANT_NO 在 C 市没有位置?

使用这个例子,我想返回:
 RESTAURANT_NO
 -------------
 1
 4

由于 RESTAURANT_NO 2 和 3 都在 C 市有位置。

我不知道如何将 RESTAURANT_NO 组合在一起,同时还尝试仅选择满足此要求的组。

编辑:我得到了这个工作。

但是,还有最后一件事我仍然无法弄清楚。
下表列出了人员的 ID 号以及他们工作过的城市:
PERSON_NO | CITY_NAME
---------------------
1         |    City A
2         |    City B
3         |    City A
3         |    City B
3         |    City C
4         |    City A
4         |    City B
4         |    City C

我怎么能得到所有人的PERSON_NO
谁住在所有三个城市,A、B 和 C?

我想回来
PERSON_NO
---------
3
4

再次感谢。我没有太多的 SQL 经验,所以我不知道该怎么做。

最佳答案

单程:

SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_NO NOT IN
(SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_LOCATION = 'City C')

关于SQL:如何只选择不包含特定值的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9355241/

相关文章:

c# - 一个关于SQL插入语句的问题!

MySQL 订单表中订单商品的汇总价格

MySQL 5.6 InnoDB count、group by、having 和 order by 返回错误结果

mysql - 按月在表中显示结果

linq - 动态 Linq GroupBy 选择无法正常工作

mysql - 选择总计作为同一个表中的三个字段作为一个查询?

sql - 执行此操作之前,请在数据库中创建主 key 或在 session 中打开主 key

mysql查询 - 计算相似的术语

python - 在 pandas 中按组获取事件的连续出现次数

python - 如何使用 GROUP BY 和 HAVING 与 SQLAlchemy 和 Postgresql 获取具有最大更新日期时间的行