ホームページ >データベース >mysql チュートリアル >同じテーブル内の一致する行からテーブル行の値を更新するにはどうすればよいですか?
同じテーブル内の一致する行からテーブル行の値を更新する
テーブルに必要な非一意の ID と複合キーが含まれている状況では、行の一意性、同じテーブル内の他の行のデータを使用して行値を更新することが課題となる可能性があります。次のシナリオを考えてみましょう:
次のデータを含むテーブルがあるとします:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | |
4 | Test | |
1 | Test3 | VALUE3 |
目標は、「Test2」と「Test」の値を他の行のデータで更新することです。同じ 'NAME' (行を識別するために ID は一意ではありません)。期待される出力は次のようになります。
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
この課題に対処するには、次のクエリを利用できます。
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
このクエリは、同じテーブルの 2 つのインスタンス (data_table のエイリアス) に依存します。 dt1 と dt2) を使用してデータを比較し、更新の対象となる行を特定します:
その結果、クエリは dt1 の値を dt2 からの一致するデータで更新し、「NAME」が一致する行の空のセルを効率的に設定します。このアプローチにより、同じテーブル内の行値のシームレスな更新が可能になり、最初の課題が解決されます。
以上が同じテーブル内の一致する行からテーブル行の値を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。