有一个包含数据的表“ 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


这样可以避免重复输入的问题。

关于mysql - MySQL查询-获取不同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1560885/

10-12 12:20
查看更多