我堅持這種情況,我需要根據這種邏輯提取 ID。
在此示例中,我想在輸出中提取以下組合:
- 包括結果,如果:
- source 具有以下一種或多種組合 - Raja、Ravi 或 Sam
和
- 在以下情況下排除 ID:
- Source 有一個或多個組合 - Jane、Jake 或 Jude。
| ID | 來源 |
|---|---|
| 1 | 拉惹 |
| 1 | 拉維 |
| 2 | 山姆 |
| 2 | 拉惹 |
| 3 | 杰克 |
| 3 | 拉惹 |
| 3 | 山姆 |
| 3 | 簡 |
| 4 | 山姆 |
| 4 | 杰克 |
| 4 | 裘德 |
輸出,我期望為:
| ID |
|---|
| 1 |
| 2 |
這個源表對于每個 id 總是有超過 1 個源值。
提前致謝。
uj5u.com熱心網友回復:
使用聚合并在HAVING子句中設定條件:
SELECT ID
FROM tablename
GROUP BY ID
HAVING SUM(Source IN ('Raja', 'Ravi', 'Sam')) > 0
AND SUM(Source IN ('Jane', 'Jake', 'Jude')) = 0;
請參閱演示。
uj5u.com熱心網友回復:
使用 EXISTS 和 NOT EXISTS 的一個很好的例子。
這是一種方法
select distinct t.id
from table t
where exists (select 1
from table t2
where t2.id=t.id
and t2.name in ('Raja','Ravi','Sam')
and not exists(select 1
from table t3
where t3.id=t.id
and t3.name in ('Jane','Jake','Jude')
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/404831.html
標籤:
上一篇:回圈遍歷SQL列中的陣列
