[英]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.