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

时间:2016-08-30 14:58:41

标签: mysql sql

我试图从表中获取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

注意

请随时编辑帖子,以使其更容易理解,我已经尽力了,但我知道它的解释不是很好,特别是标题

非常感谢

2 个答案:

答案 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)

您可以尝试使用HAVINGGROUP_CONCAT

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