3

テーブルがあり、このテーブルには複数の列が含まれています。特定の列のエントリを除くすべてのエントリを更新する方法を知りたいです。複数の更新クエリを使用したくありません。

これについて何か考えがある場合は、私を共有してください。あなたの助けは間違いなく高く評価されます。

テーブル構造

ここに画像の説明を入力

クエリ(私はこれを自分で試しましたが、これも機能していることについて混乱しています)

UPDATE `table` SET STATUS = 0;
UPDATE `table` SET STATUS = 1 WHERE id = 4;

私の質問は、これらのクエリを 1 つのクエリに結合する方法です

4

3 に答える 3

13

1 行を除くすべての行を更新するには:

UPDATE `table` SET STATUS = 0 WHERE id <> 4;

行のステータスを明示的に設定する必要がある場合はid = 1、別のクエリで行うことをお勧めします。

本当に1 つのクエリで実行したい場合:

UPDATE `table` SET STATUS = IF(id = 4, 1, 0);
于 2012-06-20T11:36:13.923 に答える
2

次の方法で実行できます。

UPDATE table SET STATUS = (id = 4);

任意のブール条件を使用できることに注意してください。

UPDATE table SET STATUS = (id IN (4, 2));
于 2012-06-20T11:36:01.960 に答える
0
UPDATE table 
LEFT JOIN (SELECT 4 AS 'id', 1 AS 'status') AS tmp USING(id)
SET table.status = COALESCE(tmp.status, 0)
于 2012-06-20T13:11:42.443 に答える