這個問題在這里已經有了答案: 選擇其他表中不存在的行 (4 個回答) 9 小時前關閉。
我是 SQL 新手,我正在嘗試解決以下問題:
我有一個馬拉松表,上面有 2 個不同的年份,其中發生了一場馬拉松比賽,還有一個列描述了特定年份的運動員參加的活動。我想回傳參加 2001 年但不參加 2000 年的運動員的姓名。到目前為止,我嘗試了不同的查詢(存在、不存在和不存在等),但都沒有奏效。
| 年 | 運動員 |
|---|---|
| 2000年 | 白色的 |
| 2000年 | 亞當斯 |
| 2000年 | 史密斯 |
| 2001年 | 白色的 |
| 2001年 | 約翰遜 |
uj5u.com熱心網友回復:
在 postgres 中,您可以使用 EXCEPT ...
select athlete
from marathon
where year = 2001
except
select athlete
from marathon
where year = 2000
輸出:
Johnson
uj5u.com熱心網友回復:
您還可以使用聚合函式和陣列進行比較:
SELECT athlete
FROM marathon
GROUP BY athlete
HAVING NOT ARRAY_AGG(year) @> ARRAY[2000];
在尋找這兩年都沒有參加的運動員時:
SELECT athlete
FROM marathon
GROUP BY athlete
HAVING NOT ARRAY_AGG(year) @> ARRAY[2000,2001];
或者確實參加過 2000 年或 2001 年:
SELECT athlete
FROM marathon
GROUP BY athlete
HAVING ARRAY_AGG(year) && ARRAY[2000,2001];
uj5u.com熱心網友回復:
你在尋找像這樣簡單的東西嗎
SELECT * FROM `ATHLETES_TABLE` WHERE `year` = '2001';
編輯:僅對于名稱,您會將名稱 columnn 傳遞給 SELECT
SELECT athlete FROM `ATHLETES_TABLE` WHERE `year` = '2001';
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/357315.html
標籤:sql PostgreSQL的
