Mysql 如果另一列有多个值,如何选择按列分组的值

Mysql 如果另一列有多个值,如何选择按列分组的值,mysql,sql,Mysql,Sql,我试图从一个表中得到第1列中的值,第2列中有一些值 例如,我想得到A,因为它有“1,2,3”。(select的预期输出:A) 这就是我尝试过的 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) 我真的不知道我

我试图从一个表中得到第1列中的值,第2列中有一些值

例如,我想得到A,因为它有“1,2,3”。(select的预期输出:A)

这就是我尝试过的

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)

我真的不知道我怎么能强迫它拥有所有这3个值

这是试一试的方法

注意

请随意编辑这篇文章,让它更容易理解,我已经尽了最大的努力,但我知道它没有很好的解释,特别是标题


非常感谢

您可以使用
HAVING()
子句:

SELECT col1
WHERE Col2 in (1,2,3) 
GROUP BY col1
HAVING COUNT(col2) = 3
这将仅显示具有3个值的结果,并且由于您仅对
1,2,3
进行了筛选,因此如果有3个值,则将显示这3个值

注意:如果col2上的值不明显,例如,此数据可能出现:

A | 1
A | 1
A | 2

然后在计数的括号内添加
DISTINCT

您可以尝试玩
HAVING
GROUP\u CONCAT

SELECT COL1 
FROM sample
GROUP BY COL1
HAVING GROUP_CONCAT(DISTINCT COL2 ORDER BY COL2 ASC) LIKE '%1,2,3%'

在这种情况下,DISTINCT(希望)是多余的。否则我们会丢失一个主键:-(我必须同意,我删除了它:)@strawberry实际上根据OP的要求,distinct在这里是强制的,否则所有具有(1,2,3)作为col2的任意组合的col1值都将显示为alright!结果很好!非常感谢:)@hchaznedaroglu实际上,没有。
SELECT COL1 
FROM sample
GROUP BY COL1
HAVING GROUP_CONCAT(DISTINCT COL2 ORDER BY COL2 ASC) LIKE '%1,2,3%'