このチュートリアルでは、SQLを使用してテーブルの行を更新するさまざまな方法について説明し、より一般的な更新からより具体的な方法へと進んでいきます。
すべてのフィールドを同じ値に更新する必要がある場合は、単純なUPDATE
を使用して更新できます。 コマンド。
UPDATE table
SET col = new_value;
列の現在の値が条件に一致するかどうかに応じて条件付き更新を行うには、WHERE
を追加します。 これを指定する句。データベースは最初にWHERE
に一致する行を検索します 句を入力してから、それらの行に対してのみ更新を実行します。
UPDATE table
SET col = new_value
WHERE col = old_value;
これを拡張するために、WHERE
に何でも追加できます 有効な式である限り、好きな句。したがって、同じテーブル内の別の列の値に基づいて更新を実行するには、次のように実行できます。
UPDATE table
SET col = new_value
WHERE other_col = some_other_value;
WHERE
以降 句には任意の有効な式を含めることができます。また、複数の列が基準を満たす場合に更新を行うこともできます
UPDATE table
SET col = new_value
WHERE col = old_value
AND other_col = some_other_value;
UPDATE table
SET col = new_value
WHERE col = old_value
OR other_col = some_other_value;
ご覧のとおり、WHERE
を展開できます 必要なものに更新するために行をフィルタリングするために、必要なだけ句を記述します。
別のテーブルの状態に基づいて1つのテーブルの行を更新する場合はどうなりますか?この質問は、これを行うためのいくつかの異なる方法につながります。
WHERE
以降 句には任意の有効な式を含めることができます。サブクエリを使用できます:
UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);
SET
でサブクエリを使用することもできます 列を別のテーブルの値に設定する場合は、ステートメントの一部
UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);
おそらく、より簡単な方法は、UPDATE
の後に複数のテーブルを指定することです。 句。 SET
のみ 式は更新を実行しますが、追加のテーブルをリストすると、テーブルを含めることができます。
UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;
WHERE
を展開するのと同様です 節では、結合する必要のあるテーブルが複数ある場合は、テーブルの数を拡張して、必要なすべてのテーブルを含めることができます。