在sql中使用SELECT和GROUP_CONCAT函数更新表行

时间:2013-04-11 01:07:27

标签: mysql sql group-concat

我的sql数据库中有3个表。

这是我的数据表:

table1
ID         WORD
1          a
2          b
3          c
7          o
14         z
32         q
57         i

table2
ID         FORWORD
1          apple
1          orange
3          disc1
3          disc2
3          disc3
14         book
32         letter1
32         letter2
32         letter3
57         keyboard
57         mouse

table3
ROWID      WORD       NAME
1          a          NULL
2          b          NULL
3          c          NULL
4          o          example, example1
5          z          NULL
6          q          window, window1
7          i          NULL

table1和table2具有相同的ID。 table1和table3有WORD。 我想更新表3中的NAME列中的数据,并获得如下结果:

table3
ROWID      WORD       NAME
1          a          apple, orange
2          b          NULL
3          c          disc1, disc2, disc3
4          o          NULL
5          z          book
6          q          letter1, letter2, letter3
7          i          mouse

请帮助解决这个问题。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找UPDATE JOIN,使用GROUP_CONCAT

update table3 t3
  join (
    select t1.word, group_concat(t2.forward order by t2.forward separator ', ') name
    from table1 t1
      left join table2 t2 on t1.id = t2.id
    group by t1.word
    ) t on t3.word = t.word
set t3.name = t.name;

SQL Fiddle Demo

请注意,第7行应返回键盘,鼠标为table2,其中2条记录为57。

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat