テーブル内のデータのコピー
リレーショナル データベースでは、同じテーブル内のある行から別の行にデータをコピーすると便利なことがよくあります。この記事では、同じテーブル内の別の行のデータを使用して行の値を更新する方法について説明します。
次の構造を持つテーブルを考えます。
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | |
4 | Test | |
1 | Test3 | VALUE3 |
目標は、 「VALUE」列に値が欠落している行の値を取得するには、同じ「NAME」を持つ別の行から値をフェッチします。期待される出力:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
この解決策には自己結合が含まれます。一時テーブルを使用して null 以外の行のみを保存すると、元のテーブルを更新できます。
UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') t1 SET t.VALUE = t1.VALUE WHERE t.ID = t1.ID AND t.NAME = t1.NAME
説明:
更新クエリ:
提供されたソリューションは、目的の出力を達成するために調整できます:
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
以上が自己結合を使用してテーブル内のデータをコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。