我有一張這樣的表:
ID pid et time action
1 A a 1 t1 -
2 A b 5 t2 r
3 B c 1 t3 -
4 B d 3 t4 -
5 B e 5 t5 r
6 C f 1 t6 -
7 C g 1 t7 -
我想在 where 子句中應用過濾器以回傳滿足特定 ID 下特定條件的行。
我想回傳符合這些條件的所有 ID
- et = 3
或者
- 動作 = 'r'
結果應該是:
ID pid et time action
1 A a 1 t1 -
2 A b 5 t2 r
3 B c 1 t3 -
4 B d 3 t4 -
5 B e 5 t5 r
因為 ID = C 是上表中唯一沒有C符合上面兩個條件的ID
uj5u.com熱心網友回復:
您可以使用exists來檢查每個Id匹配項
select *
from t
where exists (
select * from t t2
where t2.id=t.id and (t2.et=3 or t2.action='r')
)
見資料庫<>小提琴
uj5u.com熱心網友回復:
如果這些都是 where 子句應該是......
where (action = 'r') OR (et= 3)
但這只會回傳第 2、4、5 行。
對于您想要的結果,您應該使用它:
select * from t where ID in (select ID from t where (action = 'r') OR (et=3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/381375.html
上一篇:如何在合并陳述句中撰寫case運算式以列印所需的結果
下一篇:SQL中的唯一非重復值對
