データベースに公開というフラグがあり、公開された行に対してこれを 1 に設定します。私の質問は、1 つのクエリだけで他のすべての行を 0 に設定し、特定の行を 1 に設定する方法はありますか。
現時点で私は使用しています:
$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
データベースに公開というフラグがあり、公開された行に対してこれを 1 に設定します。私の質問は、1 つのクエリだけで他のすべての行を 0 に設定し、特定の行を 1 に設定する方法はありますか。
現時点で私は使用しています:
$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
UPDATE my_table SET published = IF (id = $id,1,0);
CASE ステートメントを使用する
UPDATE my_table
SET published = CASE
WHEN id = '$id' THEN 1
ELSE 0 END
MySQL にはブール型 (条件は整数を返す) がないため、これも機能します。
UPDATE my_table
SET published = (id = $id);
id = $id
$id が id と異なる場合は 0 を返し、そうでない場合は 1 を返します。