如何将SQL不同的查询结果连接成一个字符串?

时间:2015-07-24 06:07:39

标签: mysql

如何从列中获取不同的值并将它们连接成一个字符串?感谢。

例如,我有一个像

这样的列
fruit_name
------
apple
apple
apple
banana
orange
orange
.
.
.

我想创建一个像apple, banana, orange...

这样的结果

以下是我尝试的查询,但只会得到apple, apple, apple, banana...

的结果
SELECT LISTAGG(fruit_name,', ') WITHIN GROUP (ORDER BY fruit_name) "fruit_List" FROM FRUIT_TABLE;

我不知道如何使结果与众不同。

4 个答案:

答案 0 :(得分:1)

您可以使用MySQL GROUP_CONCAT()函数来解决您的问题:

SELECT GROUP_CONCAT(t.fn)
FROM
(
    SELECT fruit_name fn
    FROM FRUIT_TABLE
    GROUP BY fruit_name
) t

GROUP_CONCAT中的默认分隔符是逗号,这是您在原始问题中指定的。

<强>更新

我对@ cars10的解决方案表示赞赏,他指出每个人最初都错了。

答案 1 :(得分:1)

尝试此查询,

SELECT GROUP_CONCAT(DISTINCT fruit_name) FROM FRUIT_TABLE ORDER BY fruit_name;

答案 2 :(得分:1)

您可以使用GROUP_CONCAT使用以下查询,因为LISTAGG在mysql中不可用:

SELECT GROUP_CONCAT(DISTINCT fruit_name ORDER BY fruit_name ASC SEPARATOR ',') as fruit_List
FROM FRUIT_TABLE

GROUP_CONCAT包含DISTINCTORDER BY个属性

答案 3 :(得分:0)

编辑(我的第一个版本显然是错误的!)

select group_concat(fn) fruit_list
from (select fruit_name fn 
         from fruit_table 
         group by fruit_name) fruits

现在它有效,请看这里:http://sqlfiddle.com/#!9/bfbf4/2但Nikhil Batra的解决方案显然是更好的选择!