我试图从表中获取column1中的值,这些值在column2中有一些值。
例如,我想获得A,因为它有" 1,2,3"。 (期望的选择输出:A)
---
A|1
A|2
A|3
A|4
B|1
B|3
---
这是我尝试过的
SELECT * FROM sample_table WHERE Col2 in (1,2,3) GROUP BY col1
我完全理解它不会起作用,因为我只是把第2列必须具有其中一个值的条件,然后我将它们按Col1分组,所以它需要(A,1),( A,2),(A,3),(B,1),(B,2) - >按Col1分组,给我(A)和(B)
我真的不知道如何强迫它拥有 ALL 3个值
以下是试用它的fiddle
注意
请随时编辑帖子,以使其更容易理解,我已经尽力了,但我知道它的解释不是很好,特别是标题
非常感谢
答案 0 :(得分:6)
您可以使用HAVING()
子句:
SELECT col1
WHERE Col2 in (1,2,3)
GROUP BY col1
HAVING COUNT(col2) = 3
这将仅显示包含3个值的结果,并且由于您仅针对1,2,3
进行了过滤,如果有3个,则为3。
注意:如果col2上的值不明显,则E.G.这些数据可能会出现:
A | 1
A | 1
A | 2
然后在计数的括号内添加DISTINCT
。
答案 1 :(得分:0)
您可以尝试使用HAVING
和GROUP_CONCAT
:
SELECT COL1
FROM sample
GROUP BY COL1
HAVING GROUP_CONCAT(DISTINCT COL2 ORDER BY COL2 ASC) LIKE '%1,2,3%'