简体   繁体   English

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

[英]How to concatenate SQL distinct query results into a string?

How to get the distinct values from a column and concatenate them into one string? 如何从列中获取不同的值并将它们连接成一个字符串? Thanks. 谢谢。

For example, I have a column like 例如,我有一个列

fruit_name
------
apple
apple
apple
banana
orange
orange
.
.
.

I want to create a result like apple, banana, orange... 我想创建一个结果,如apple, banana, orange...

Here is the query I have tried but it will only give a result of apple, apple, apple, banana... 这是我尝试的查询,但它只会给出apple, apple, apple, banana...

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

I have no idea how to make the result distinct. 我不知道如何使结果明显。

You can use the MySQL GROUP_CONCAT() function to solve your problem: 您可以使用MySQL GROUP_CONCAT()函数来解决您的问题:

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

The default separator in GROUP_CONCAT is a comma, which is what you specified in your original problem. GROUP_CONCAT的默认分隔符是逗号,它是您在原始问题中指定的。

Update: 更新:

I give credit for this solution to @cars10 who pointed out that everyone initially got this wrong. 我对@ cars10的这个解决方案表示赞赏,他指出每个人最初都错了。

试试这个查询,

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

You can use the following query using GROUP_CONCAT since LISTAGG is not available in mysql: 您可以使用GROUP_CONCAT使用以下查询,因为LISTAGG在mysql中不可用:

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

GROUP_CONCAT has DISTINCT and ORDER BY attributes included GROUP_CONCAT包含DISTINCTORDER BY属性

edit: (my first version was plainly wrong!) 编辑:(我的第一个版本显然是错的!)

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

Now it works, see here: http://sqlfiddle.com/#!9/bfbf4/2 but Nikhil Batra's solution is clearly a better choice! 现在它可以工作,请看这里: http ://sqlfiddle.com/#!9 / bfbf4 / 2,但Nikhil Batra的解决方案显然是更好的选择!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM