簡體   English   中英

MySQL查詢-獲取不同的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM