mysql group_concat 作为 set 语句的值

标签 mysql subquery group-concat

我正在尝试更新具有多行串联值的字段。

所以有表a:

ID | single_value  
1  | hello
2  | something
1  | world
42 | another someting
1  | bye bye

...

和表b:

ID | concated_field
1  | ''  (i.e. empty )
2  | ''
3  | ''
4  | ''

结果,表 b 应该是:

ID | concated_field
1  | hello, world, bye bye
2  | something
3  | ''
42 | another something

...

我的查询是:

    update data.table b, data.content a
    set b.concated_field= (
       select group_concat(single_value separator ', ') from data.table
    )
    where b.ID= a.ID;

但我的结果是这样的:

ID | concated_field 
1  | hello, something, world,another something, bye bye
2  | ''
3  | ''
42 | ''

...

似乎 WHERE 部分是错误的,但我不明白。 我正在认真寻求帮助! :)

最佳答案

您需要在子查询中使用 WHEREGROUP BY 子句才能达到预期结果。

 update data.table b, data.content a
    set b.concated_field= (
       select group_concat(single_value separator ', ') 
       from data.table 
       where data.table.ID = b.ID
       group by data.table.ID
    )
    where b.ID= a.ID;

关于mysql group_concat 作为 set 语句的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41594002/

相关文章:

Java 使用 SSL 进行数据库连接

PHP MySQL 插入数组语法

Mysql Case 返回错误值

php - 从一个表中选择结果,并为每一行选择另一个表中具有相同 id 的所有行

mysql - Django mysql客户端安装

php - 如何访问嵌套 MySQL 查询内部的行

mysql - TIMEDIFF 子查询在 mariadb 中返回多于 1 行

mysql - 如何在多列中使用 MySQL group_concat() 函数

php - codeigniter 加入多对多 LIMIT

mysql - 选择所有,除非 MYSQL 中的特定单元格值