mysql:使用GROUPBY和group_CONCAT(列名称分隔符“,”)选择位置
表格内容: number value 1 123 1 345 使用value where子句的原因是 输出应该有123345,因为数字1与这两个值都关联。所以我希望两个值都用逗号分隔。 我不想删除value的where子句,因为我也想通过它进行查询 简单地说,它就像分组值中的123mysql:使用GROUPBY和group_CONCAT(列名称分隔符“,”)选择位置,mysql,sql,Mysql,Sql,表格内容: number value 1 123 1 345 使用value where子句的原因是 输出应该有123345,因为数字1与这两个值都关联。所以我希望两个值都用逗号分隔。 我不想删除value的where子句,因为我也想通过它进行查询 简单地说,它就像分组值中的123 谁能告诉我哪里出了问题 我认为您在问题中提到的查询不是您实际运行的查询,也不是您显示给我们的输出是由什么生成的。相反,我认为您运行了以下查询: SELECT number,
谁能告诉我哪里出了问题 我认为您在问题中提到的查询不是您实际运行的查询,也不是您显示给我们的输出是由什么生成的。相反,我认为您运行了以下查询:
SELECT
number,
GROUP_CONCAT(value SEPARATOR ', ') AS val
FROM table_name
WHERE value = '345'
GROUP BY number
问题是WHERE子句,它只将聚合检索到一条记录。删除它,您应该会得到预期的结果:
SELECT
number,
GROUP_CONCAT(value) AS val
FROM table_name
GROUP BY number
我想你想要:
SELECT number, GROUP_CONCAT(value SEPARATOR ', ') as val
FROM table_name
GROUP BY number
HAVING MAX(value = '345') > 0;
这将返回至少有一个值为“345”的任何数字的所有值
是一个显示它工作的SQL小提琴。更新了我的问题@Dishann根据您在问题中提供的样本数据,我的查询是有效的,也是合理的。不!!它仍然返回给我一张唱片。在sql fiddle@dishanm中尝试了您的建议。你的SQL小提琴坏了。@dishanm。您的示例数据已损坏。数字有两个不同的值。它们不会结合在一起。@dishanm Ranting不会让你更快得到答案。@Gordon Linoff:粘贴我使用的sql模式的sql fiddle:CREATE tab ID int,col varchar1000;在选项卡值1中插入“999”;在选项卡值2中插入“12345”;SELECT query:选择id,GROUP_CONCATcol SEPARATOR',作为val,从标签GROUP BY id中选择MAXcol='999'>0;请不要发布样本数据或结果的图像。
SELECT
number,
GROUP_CONCAT(value SEPARATOR ', ') AS val
FROM table_name
WHERE value = '345'
GROUP BY number
SELECT
number,
GROUP_CONCAT(value) AS val
FROM table_name
GROUP BY number
SELECT number, GROUP_CONCAT(value SEPARATOR ', ') as val
FROM table_name
GROUP BY number
HAVING MAX(value = '345') > 0;