簡體   English   中英

SELECT 帶多個主鍵

[英]SELECT with multiple PRIMARY KEY

我有 3 張桌子:

nation (name PRIMARY KEY);
city (name PRIMARY KEY, nation REFERENCES nation(name))
overflight (number, city, PRIMARY KEY (number, city))

飛越表內容如下所示:

AA11 city1

AA11 city2

BB22 city1

BB22 city3

等等

我只需要 select 在城市領域中沒有來自某個國家的城市的飛越。

我試過:

SELECT number 
FROM overflight 
JOIN city ON overflight.city = city.name 
WHERE overflight.city NOT IN (
  SELECT name FROM city WHERE nation = some_nation
) 
GROUP BY number;

但它不起作用,因為它沒有列出具有來自 some_nation 的城市的飛越行,但可能發生相同的飛越在表中有另一行在 some_nation 中沒有城市的情況。 如何僅顯示在 some_nation 中根本沒有城市的飛越?

希望我已經盡可能清楚地解釋了我的問題。

編輯
這是飛越表的確切內容:

AZ 7255 Rome
AZ 7255 Milan
AZ 608 Rome
AZ 608 New York
AA 1 New York
AA 1 Los Angeles
BA 2430 New York
BA 2430 Los Angeles

假設我想展示沒有飛越意大利任何城市的飛越。 我需要結果是這樣的

AA 1 New York
AA 1 Los Angeles
BB 2430 New York
BB 2430 Los Angeles

加入表格以獲取您想要排除的國家/地區的城市的飛越編號,並使用運算符NOT IN到 select 所有其他飛越:

SELECT * FROM overflight 
WHERE number NOT IN (
  SELECT o.number
  FROM overflight o INNER JOIN city c
  ON o.city = c.name
  WHERE c.nation = 'Italy'
)

請參閱演示
結果:

數字 城市
AA 1 紐約
AA 1 洛杉磯
巴 2430 紐約
巴 2430 洛杉磯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM