[英]MySQL Query - Getting distinct values
有一個包含數據的表“ T”,如下所示:
A B
---------
3 5
4 6
7 10
8 5
9 12
3 6
3 7
8 7
假設給定的輸入集{3,8}作為A的值,如何檢索B的所有不同值,其中輸入集中的所有值都有一個條目?
B
---
5
7
編輯:我認為問題還不夠清楚。 我希望B中的值具有記錄,該記錄中具有給定集合中的所有值作為A列的值。因此,將不包括B = 6,因為不存在A = 8和B = 6的記錄。 希望這清楚!
SELECT DISTINCT B
FROM my_table WHERE A IN (3,8)
編輯:
SELECT B FROM AB WHERE A = 3
INTERSECT
SELECT B FROM AB WHERE A = 8
INTERSECT為您提供在兩個結果集中出現的行。
第二次編輯:
SELECT B,COUNT(B)
FROM AB WHERE A IN (3,8)
GROUP BY B
HAVING COUNT(B) = 2
但是,您應該在兩個地方進行修改:在IN參數中,最后在COUNT(B)=?中。 ? 應該等於參數個數。 我希望這將有所幫助。
第三編輯:
SELECT B,COUNT(B)
FROM
(
SELECT DISTINCT A, B FROM AB
) x
WHERE A IN (3,8)
GROUP BY B
HAVING COUNT(B) = 2
這樣可以避免重復輸入的問題。
基本上,您可以創建兩個子查詢,在其中僅過濾出匹配候選行(即A為3或8)。 然后將這些行彼此連接到B的值上,任何匹配的行都將成為您想要的。 我不太確定MySQL的語法,但是我相信這會起作用:
SELECT * FROM (SELECT * FROM T WHERE A = 3) t3 INNER JOIN (SELECT * FROM T WHERE A = 8) t8 ON t3.B = t8.B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.