0

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

这是我的数据表:

表格1
识别字
1个
2 乙
3℃
7点
14z
32问
57 我

表2
ID FORWORD
1个苹果
1个橙子
3碟1
3碟2
3碟3
14 本书
32 字母 1
32 字母 2
32 字母 3
57键盘
57 鼠标

表3
ROWID 单词名称
1 一个空
2 b 空
3 c 空
4 o 示例,示例 1
5 z 空
6 q 窗口,窗口 1
7 我为空

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

表3
ROWID 单词名称
1个苹果,橙子
2 b 空
3 c 光盘1、光盘2、光盘3
4 o 空
5z书
6 q 字母 1、字母 2、字母 3
7 i 鼠标

请帮忙解决这个问题。

4

1 回答 1

1

我认为您正在寻找一个UPDATEwith a 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 小提琴演示

请注意,第 7 行应该返回键盘、鼠标,因为 table2 有 2 条记录,57。

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

于 2013-04-11T01:27:45.537 回答