MySQL GROUP BY与GROUP_CONCAT返回所有行合并?

时间:2012-04-12 18:38:54

标签: mysql

我今天遇到了一个问题。我有一张硬币价值表:

0.01
0.01
0.01
0.05
0.10
0.25
1.00
1.00
2.00
and so on...

所以主要的想法是获得所有的值一次0.01,0.05等。

所以我这样做:

SELECT Valeur FROM Mint_Coins GROUP BY Valeur

现在它将为每个值提供一行...我希望所有值都在一行中,所以我使用它:

SELECT GROUP_CONCAT(',', Valeur) AS Values FROM Mint_Coins GROUP BY Valeur

它再次给了我一行blob ...有blob它意味着行超过512字节...好吧,让我们看看我转换时它们包含...结果现在是:

0.01, 0.01, 0.01, 0.01
0.05, 0.05
etc..

那么我做错了什么?我希望结果保存在一个colomn和一行中,如0.01,0.05,0.10,0.25,1.00,2.00

由于

3 个答案:

答案 0 :(得分:2)

您可以将distinct传递给group_concat以忽略重复的值:

SELECT GROUP_CONCAT(DISTINCT Valeur) AS Values FROM Mint_Coins

在这种情况下,您也不需要分组。

如果您希望结果包含多行,您也可以这样做:

SELECT DISTINCT Valeur FROM Mint_Coins

答案 1 :(得分:0)

SELECT GROUP_CONCAT(A.Valuer SEPARATOR ',') AS Valuer
FROM (SELECT DISTINCT Valuer FROM Mint_Coins)A ORDER BY Valuer;

检查这个有价值的链接。这会对你有所帮助。

http://mahmudahsan.wordpress.com/2008/08/27/mysql-the-group_concat-function/

答案 2 :(得分:0)

您可以使用嵌套子查询吗?

SELECT GROUP_CONCAT(',', (SELECT Valeur FROM Mint_Coins GROUP BY Valeur)) AS Values FROM Mint_Coins