0

SQL データベースに 3 つのテーブルがあります。

これはデータを含む私のテーブルです:

表1
IDワード
1a
2b
3c
7 o
14z
32q
57 私

テーブル2
ID フォワード
リンゴ1個
オレンジ1個
3 ディスク 1
3 ディスク 2
3 ディスク 3
14本
32 文字 1
32 文字 2
32 文字 3
57 キーボード
57 マウス

テーブル3
ROWID ワード名
1 ヌル
2bヌル
3cヌル
4 o 例、example1
5zヌル
6 q ウィンドウ、ウィンドウ 1
7 私ヌル

table1 と table2 は同じ ID を持っています。table1 と table3 には WORD があります。table3 の列 NAME のデータを更新し、以下のように結果を取得したい:

テーブル3
ROWID ワード名
りんご、オレンジ 1個
2bヌル
3 c ディスク 1、ディスク 2、ディスク 3
4 o ヌル
5z本
6 q 文字 1、文字 2、文字 3
7 私はマウス

その問題を解決するのを手伝ってください。

4

1 に答える 1

1

を使用UPDATEしてを探していると思います:JOINGROUP_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 フィドルのデモ

テーブル2には57の2つのレコードがあるため、行7はキーボード、マウスを返す必要があることに注意してください。

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

于 2013-04-11T01:27:45.537 に答える