3

2つのテーブルがあります

TableA
filedata_id | user_id | filename
1           | 1       | file.txt
2           | 1       | file2.txt


TableB   
a_id        | date    | filedataid | counter | state | cat_id | subcat_id | med_id
99          | 1242144 | 1          | 2       | v     | 55     |  56       | 90
100         | 1231232 | 2          | 3       | i     | 44     |  55       | 110

列cat_id、subcat_id、med_idをTableAに移動したい。ここでtableA.filedata_id = TableB.filedataid

編集:結果はtableAのスキーマ変更になるはずなので、次のようになり、tableBのそれらの列のデータも含まれます。

TableA
filedata_id | user_id | filename  | cat_id | subcat_id | med_id
1           | 1       | file.txt  | 55     | 56        | 90
2           | 1       | file2.txt | 44     | 55        | 110

等々。

これを簡単に行う方法はありますか?

4

3 に答える 3

4

そのために使用できますINNER JOIN

SELECT t1.filedata_id, t1.user_id, t1.filename
      ,t2.cat_id, t2.subcat_id, t2.med_id
FROM TableA t1 
INNER JOIN TableB t2 
ON t1.filedata_id = t2.filedataid

このSQLFiddleを参照してください

アップデート:

TableA次のようにスキーマを変更できます。

ALTER TABLE TableA
Add column cat_id int, 
Add column  subcat_id int, 
Add column  med_id int;

そして、TableAfromの新しい列を次のTableBように更新します。

UPDATE tableA t1 
       JOIN tableB t2 
       ON t1.filedata_id = t2.filedataid
SET t1.cat_id = t2.cat_id,
    t1.subcat_id = t2.subcat_id,
    t1.med_ID = t2.med_ID;

このSQLFiddleを参照してください

詳細については、MySQL: ALTER TABLE 構文およびMySQL: UPDATE 構文を参照してください。

于 2012-09-12T03:36:12.743 に答える
2

INNER JOINこの上で 使用できます。

SELECT  a.*,
        b.cat_id,
        b.subcat_id,
        b.med_ID
FROM    TableA a
        INNER JOIN TableB b
            On a.filedata_id = b.filedataid

SQLFiddle デモ

コメントを見て、テーブルを変更して列を追加する必要があります。そのためには、この DDL ステートメントを実行する必要があります。

ALTER TABLE TableA ADD COLUMN cat_id int;
ALTER TABLE TableA ADD COLUMN subcat_id int;
ALTER TABLE TableA ADD COLUMN med_ID int;

TableA次に、の値に基づいて行を更新できるようになりましたTableB

UPDATE tableA t1 INNER JOIN tableB t2 
        ON a.filedata_id = b.filedataid
SET a.cat_id = b.cat_id,
    a.subcat_id = b.subcat_id,
    a.med_ID = b.med_ID

これが理にかなっていることを願っています。

于 2012-09-12T03:35:09.217 に答える
1

その場合、複数テーブル セクションのUPDATEを確認する必要があります。

複数のテーブルをカバーする UPDATE 操作を実行することもできます。ただし、複数テーブルの UPDATE で ORDER BY または LIMIT を使用することはできません。table_references 句は、結合に含まれるテーブルをリストします。その構文は、セクション13.2.8.2「JOIN 構文」で説明されています。次に例を示します。UPDATE items,month SET items.price=month.price WHERE items.id=month.id;

何かのようなもの

UPDATE  TableA, TableB
SET     TableA.cat_id = TableB.cat_id,
        TableA.subcat_id = TableB.subcat_id,
        TableA.med_ID = TableB.med_ID
WHERe   TableA.filedata_id = TableB.filedataid

テーブルの変更 (TableA への列の追加) については、ALTER TABLE 構文を参照してください。

于 2012-09-12T03:44:15.397 に答える