2017-09-26 18 views
-1

表内容: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

任何一个可以告诉我在哪里我错了吗?

+1

请不要发布样品数据或结果的图像。 –

回答

0

我不认为你在你的问题中提到的查询是你实际运行的,或者你产生的输出结果。相反,我觉得我们是把这个查询:

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根据您在问题中提供的示例数据,我的查询是有效的并且是合理的。 –

0

我想你想:

SELECT number, GROUP_CONCAT(value SEPARATOR ', ') as val 
FROM table_name 
GROUP BY number 
HAVING MAX(value = '345') > 0; 

这将返回所有值的任何数量的具有'345'至少一个值。

Here是一个SQL小提琴,显示它的工作原理。

+0

不!它仍然返回我单个记录。在sql小提琴中试过你的建议http://sqlfiddle.com/#!9/829df/2/0 – dishanm

+0

@dishanm。 。 。你的SQL小提琴坏了。 –

+0

这个链接http://sqlfiddle.com/#!9/829df/2/0 – dishanm