Select

選擇兩個列值的結果

  • July 11, 2022

希望語法選擇具有兩個可能的列值的結果。

現在我正在 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

這會讓你

對於嵌套查詢,這不會非常有效。優化至少在一定程度上取決於數據量、可變性以及您使用的數據庫。

引用自:https://dba.stackexchange.com/questions/314280