2012-02-20 100 views
10

說我有一個表:SQL:如何只選擇不包含特定值的組?

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 

我怎麼能夠得到所有誰住在這三個城市中,A,B的人 的PERSON_NO ,和C?

我想回到

PERSON_NO 
--------- 
3 
4 

感謝,再次。我沒有太多的SQL經驗,所以我不知道該怎麼做。

+0

爲了什麼數據庫? – 2012-02-20 01:50:24

+0

您使用什麼數據庫? – Luke101 2012-02-20 01:51:47

回答

14

方式一:

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

我測試過我的數據庫與此查詢,它似乎工作。謝謝。 – vesselll 2012-02-20 02:12:51

4
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' 
    ) 
3

使用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 
+0

我更新了我的答案。我沒有看到'餐廳2'。謝謝! – 2012-02-20 02:02:08

相關問題