到目前為止,這是我的查詢,但仍在努力解決如何不顯示 JONES 記錄的問題...
SELECT SNAME, JOB FROM STAFF WHERE JOB IN (SELECT JOB FROM STAFF WHERE SNAME = 'JONES');
結果...
姓名作業
瓊斯經理
海亞特經理
克拉克經理
uj5u.com熱心網友回復:
添加另一個過濾器以排除JONES行:
SELECT SNAME,
JOB
FROM STAFF
WHERE JOB IN (SELECT JOB FROM STAFF WHERE SNAME = 'JONES')
AND sname != 'JONES';
或者,不查詢表兩次:
SELECT sname,
job
FROM (
SELECT sname,
job,
COUNT(CASE sname WHEN 'JONES' THEN 1 END) OVER (PARTITION BY job)
AS num_jones
FROM staff
)
WHERE num_jones > 0
AND sname != 'JONES';
其中,對于樣本資料:
CREATE TABLE staff (sname, job) AS
SELECT 'JONES', 'MANAGER' FROM DUAL UNION ALL
SELECT 'HAYAT', 'MANAGER' FROM DUAL UNION ALL
SELECT 'CLARK', 'MANAGER' FROM DUAL UNION ALL
SELECT 'ALICE', 'CEO' FROM DUAL UNION ALL
SELECT 'BERYL', 'CTO' FROM DUAL
兩種輸出:
| 昵稱 | 作業 |
|---|---|
| 哈亞特 | 經理 |
| 克拉克 | 經理 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/533973.html
標籤:数据库甲骨文
