3

我有一张桌子,这张桌子包含多列。我想知道如何更新除特定列中的条目之外的所有条目。我不想使用多个更新查询。

如果您对此有任何想法,请与我分享。非常感谢您的帮助。

表结构

在此处输入图像描述

查询(我自己尝试过,但我对此也很困惑)

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

我的问题是如何将这些查询组合在一个查询中

4

3 回答 3

13

要更新除一个以外的所有行:

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

如果您需要明确设置 where 行的状态id = 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 回答