Select
選擇兩個列值的結果
希望語法選擇具有兩個可能的列值的結果。
現在我正在 select distinct f1,f2,f3 from table where f3 in (‘val1’,‘val2’)
並輸出文本文件,然後尋找 val1 和 val2 都在同一 f1、f2 的文件中的情況。f3 可以是 val1, val2, val?… 每個值在表中各佔一行。謝謝!
我已經模擬了這張桌子……
…並且我假設您想找到所有
(f1,f2)
具有'val1'
或'val2'
in 的組合f3
。因此,從該表中,您會期望得到組合
(A,B)
,(A,E)
但不是(A,G)
因為最後一個組合不具有'val2'
.首先,獲得具有
'val1'
或'val2'
in 的唯一組合f3
。SELECT DISTINCT f1,f2,f3 FROM table1 WHERE f3 IN ('val1','val2')
一旦你有了它,然後將前兩列的行分組併計算你擁有的每個組合的數量。您想要有兩個的組合(必須是
'val1'
和'val2'
):SELECT f1,f2 FROM ( SELECT DISTINCT f1,f2,f3 FROM table1 WHERE f3 IN ('val1','val2') ) q GROUP BY f1,f2 HAVING COUNT(f3)=2
這會讓你
對於嵌套查詢,這不會非常有效。優化至少在一定程度上取決於數據量、可變性以及您使用的數據庫。