有一个表"T",其中包含如下所示的数据:
A B
---------
3 5
4 6
7 10
8 5
9 12
3 6
3 7
8 7
Run Code Online (Sandbox Code Playgroud)
假设给定的输入集{3,8}作为A的值,如何检索输入集中所有值都有条目的B的所有不同值?
B
---
5
7
Run Code Online (Sandbox Code Playgroud)
编辑:我认为问题不够明确.我希望B中的值具有给定集合中所有值的记录作为列A的值.因此,由于没有A = 8且B = 6的记录,因此不会包括B = 6.希望这说清楚!
SELECT DISTINCT B
FROM my_table WHERE A IN (3,8)
Run Code Online (Sandbox Code Playgroud)
编辑:
SELECT B FROM AB WHERE A = 3
INTERSECT
SELECT B FROM AB WHERE A = 8
Run Code Online (Sandbox Code Playgroud)
INTERSECT为您提供两个结果集中出现的行.
第二次编辑:
SELECT B,COUNT(B)
FROM AB WHERE A IN (3,8)
GROUP BY B
HAVING COUNT(B) = 2
Run Code Online (Sandbox Code Playgroud)
但是你应该在两个地方修改它:在IN参数和最后,在COUNT(B)=?中.?应该等于参数的数量.我希望这将有所帮助.
第3次编辑:
SELECT B,COUNT(B)
FROM
(
SELECT DISTINCT A, B FROM AB
) x
WHERE A IN (3,8)
GROUP BY B
HAVING COUNT(B) = 2
Run Code Online (Sandbox Code Playgroud)
这将避免重复条目问题.