0

同じ列のテーブルが2つあります。例えば

table 1
id
name
height
weight

table 2
id
name
height
weight

データは表2が完成しています。ただし、表1には一部のデータのみが存在し、残りの列は空です。例えば:

          table 1    table 2
id        4          4
name      (empty)    salman
height    5'11"      5'9" 
weight    (empyy)    65kg

単一のスクリプトが必要です。これにより、テーブル2をテーブル1の値で更新できますが、それが存在する場合に限ります。テーブル1が空の場所で、テーブル2にすでに存在するデータを保持したいと思います。

私はさまざまな方法を試しましたが、すべて複数のクエリが必要で、長くて多忙です。これを行うためのより簡単な方法があるかどうか知りたいですか?できれば単一のクエリで?

ありがとうございました

4

1 に答える 1

0

2つのテーブルを結合し、CASEキーワードを使用して、フィールドを条件付きで更新してみてください。

UPDATE table2 t2 INNER JOIN table1 t1 USING (id)
SET 
 t2.name = CASE WHEN (t1.name IS NULL) THEN t2.name ELSE t1.name END
 t2.height= CASE WHEN (t1.height IS NULL) THEN t2.height ELSE t1.height END
 t2.weight = CASE WHEN (t1.weight IS NULL) THEN t2.weight ELSE t1.weight END

http://dev.mysql.com/doc/refman/5.5/en/case-statement.html

http://dev.mysql.com/doc/refman/5.5/en/update.html

于 2012-04-17T10:18:38.747 に答える