我有一个这样的SQL表。
id Order
======== =========
1 4
2 3
3 5
4 1
5 2
可以在一条sql语句中更新多行吗?也就是说,我想更新id = 3,order = 1,id = 5,order =4,id =1,order =1
我知道如何在3个update语句中做到这一点。但是我想知道我是否可以在一条sql update语句中更新3行。
谢谢。
发布于 2009-10-20 00:25:47
只需一条UPDATE
语句就可以做到这一点,但我不会费心。
在这种情况下,使用三个单独的更新更有意义。试图用一条语句来做这件事会使你的代码可读性降低,并且更容易出错。
但是如果你真的想要这一条语句,你可以这样做:
UPDATE your_table
SET order = CASE id
WHEN 3 THEN 1
WHEN 5 THEN 4
WHEN 1 THEN 1
END
WHERE id IN (3, 5, 1)
发布于 2009-10-20 00:26:51
为什么要在一条语句中更新三行?
如果所有行都必须彼此同步,则可以执行以下操作:
BEGIN TRANSACTION;
UPDATE... ;
UPDATE... ;
UPDATE... ;
COMMIT
这样,在begin和commit之间的所有工作要么全部完成,要么都没有完成。这是基于SQL的关系数据库的一个关键特性。即使是SQLITE也有这种能力。
发布于 2009-10-20 00:20:56
尝试如下所示:
update Orders
set
Order = (
case
when id = 3 then 1
when id = 5 then 4
when id = 1 then 1
end
where id in (3, 5, 1)
不过,这取决于您的数据库。
https://stackoverflow.com/questions/1591814
复制相似问题