Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql:使用GROUPBY和group_CONCAT(列名称分隔符“,”)选择位置_Mysql_Sql - Fatal编程技术网

mysql:使用GROUPBY和group_CONCAT(列名称分隔符“,”)选择位置

mysql:使用GROUPBY和group_CONCAT(列名称分隔符“,”)选择位置,mysql,sql,Mysql,Sql,表格内容: number value 1 123 1 345 使用value where子句的原因是 输出应该有123345,因为数字1与这两个值都关联。所以我希望两个值都用逗号分隔。 我不想删除value的where子句,因为我也想通过它进行查询 简单地说,它就像分组值中的123 谁能告诉我哪里出了问题 我认为您在问题中提到的查询不是您实际运行的查询,也不是您显示给我们的输出是由什么生成的。相反,我认为您运行了以下查询: SELECT number,

表格内容:

number value 1 123 1 345 使用value where子句的原因是

输出应该有123345,因为数字1与这两个值都关联。所以我希望两个值都用逗号分隔。 我不想删除value的where子句,因为我也想通过它进行查询 简单地说,它就像分组值中的123
谁能告诉我哪里出了问题

我认为您在问题中提到的查询不是您实际运行的查询,也不是您显示给我们的输出是由什么生成的。相反,我认为您运行了以下查询:

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;