MySQL的:选择其中具有组通过与GROUP_CONCAT(COL_NAME SEPARATOR '')
问题描述:
表内容:MySQL的:选择其中具有组通过与GROUP_CONCAT(COL_NAME SEPARATOR '')
number value 1 123 1 345
我具有上面表中的内容,我想下面输出当我做一个选择:
number value 1 123,345
但我得到
number value 1 345
SQL现在用:
SELECT number, GROUP_CONCAT(value SEPARATOR ', ') as val,
from table_name
where value="345"
group by number
之所以使用值where子句是
- 输出应该有123345(因为
number
1与两个value
相关联)。所以我希望两个值都用逗号分隔。 - 我不想删除的WHERE子句
value
,因为我想通过查询以及 - 简单来说它就像在(分组
value
值)123
任何一个可以告诉我在哪里我错了吗?
答
我不认为你在你的问题中提到的查询是你实际运行的,或者你产生的输出结果。相反,我觉得我们是把这个查询:
SELECT
number,
GROUP_CONCAT(value SEPARATOR ', ') AS val
FROM table_name
WHERE value = '345'
GROUP BY number
的问题是你的WHERE
条款,这是retricting聚集到只有一个记录。删除它,你应该得到你所期望的结果:
SELECT
number,
GROUP_CONCAT(value) AS val
FROM table_name
GROUP BY number
+0
更新了我的问题! – dishanm
+0
@dishanm根据您在问题中提供的示例数据,我的查询是有效的并且是合理的。 –
答
我想你想:
SELECT number, GROUP_CONCAT(value SEPARATOR ', ') as val
FROM table_name
GROUP BY number
HAVING MAX(value = '345') > 0;
这将返回所有值的任何数量的具有'345'
至少一个值。
Here是一个SQL小提琴,显示它的工作原理。
请不要发布样品数据或结果的图像。 –