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

ves*_*lll 25 sql group-by

说我有一张桌子:

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
Run Code Online (Sandbox Code Playgroud)

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

使用这个例子,我想返回:

 RESTAURANT_NO
 -------------
 1
 4
Run Code Online (Sandbox Code Playgroud)

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

我不知道如何将RESTAURANT_NO组合在一起,同时也只是尝试选择满足此要求的组.

编辑:我有这个工作.

但是,最后还有一件事我还没弄清楚.下表列出了他们所在城市的人员编号:

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
Run Code Online (Sandbox Code Playgroud)

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

我想回来

PERSON_NO
---------
3
4
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ick 31

单程:

SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_NO NOT IN
(SELECT RESTAURANT_NO FROM restaurant WHERE RESTAURANT_LOCATION = 'City C')
Run Code Online (Sandbox Code Playgroud)


ype*_*eᵀᴹ 6

SELECT DISTINCT
      Restaurant_no
FROM 
      TableX t
WHERE 
      NOT EXISTS
      ( SELECT *
        FROM TableX c
        WHERE c.Restaurant_no = t.Restaurant_no
          AND c.Restaurant_location = 'City C'
      )
Run Code Online (Sandbox Code Playgroud)


Joh*_*Woo 5

使用DISTINCT.

尝试这个:

SELECT DISTINCT t.Restaurant_No
FROM Restaurant t
WHERE t.Restaurant_No NOT IN
       (SELECT s.Restaurant_No  
        FROM  Restaurant s
        WHERE s.RESTAURANT_LOCATION = 'City C')
ORDER BY t.Restaurant_No
Run Code Online (Sandbox Code Playgroud)