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