如何从列中获取不同的值并将它们连接成一个字符串?感谢。
例如,我有一个像
这样的列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;
我不知道如何使结果与众不同。
答案 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
包含DISTINCT
和ORDER 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的解决方案显然是更好的选择!