1. ホーム
  2. sql

[解決済み] 同じユーザー名を持つ別のテーブルからテーブルの値を更新する

2023-08-22 05:22:02

質問

2つのテーブルがあり、同じカラムの名前は user_name という名前の同じカラムがあります。 table_a , table_b .

をコピーしたい。 table_b , column_b_1 , column_b2 への table_b1 , column_a_1 , column_a_2 というように、それぞれ user_name は同じですが、SQL文の中でどのように行うのですか?

どのように解決するのですか?

適切なインデックスがある限り、これは問題なく動作するはずです。

UPDATE table_a
SET
      column_a_1 = (SELECT table_b.column_b_1 
                            FROM table_b
                            WHERE table_b.user_name = table_a.user_name )
    , column_a_2 = (SELECT table_b.column_b_2
                            FROM table_b
                            WHERE table_b.user_name = table_a.user_name )
WHERE
    EXISTS (
        SELECT *
        FROM table_b
        WHERE table_b.user_name = table_a.user_name
    )

でUPDATE sqlite3 はFROM句をサポートしていないため、他のRDBMSよりも少し手間がかかります。

パフォーマンスが満足のいくものでない場合、別の選択肢として、selectを使用してtable_aの新しい行を構築し、table_aを一時テーブルにjoinすることができるかもしれません。 その後、table_aからデータを削除し、一時テーブルから再投入します。