3

データベースに公開というフラグがあり、公開された行に対してこれを 1 に設定します。私の質問は、1 つのクエリだけで他のすべての行を 0 に設定し、特定の行を 1 に設定する方法はありますか。

現時点で私は使用しています:

$db->query("UPDATE my_table SET published = '0'");
$db->query("UPDATE my_table SET published = '1' WHERE id = '$id'");
4

3 に答える 3

4
UPDATE my_table SET published = IF (id = $id,1,0);
于 2013-03-08T21:04:36.060 に答える
1

CASE ステートメントを使用する

UPDATE my_table
SET published = CASE
    WHEN id = '$id' THEN 1
    ELSE 0 END
于 2013-03-08T21:04:52.780 に答える
0

MySQL にはブール型 (条件は整数を返す) がないため、これも機能します。

UPDATE my_table
SET published = (id = $id);

id = $id$id が id と異なる場合は 0 を返し、そうでない場合は 1 を返します。

于 2013-03-08T21:09:04.447 に答える