有没有办法同时从同一个表更新和选择(返回多行)?

时间:2012-08-08 16:33:42

标签: mysql sql

我要做的是查询数据库并让它返回订单。该整数被错误地插入为负数。所以我想把它的abs()重新插入正面。我不认为MySQL可以做到这一点,但这就是我编写查询的方式。我正在寻找替代方法。 (如果这不可能,我将简单地使用PHP)。谢谢。

编辑:这应该更新一行。

UPDATE `users` SET `orders` = (SELECT abs(orders)
FROM `users` WHERE count1 = 5) WHERE count1 = 5;

1 个答案:

答案 0 :(得分:0)

不幸的是,MySQL有这个愚蠢的限制,即更新的表可能不会出现在同一语句的子选项中。

但我不明白为什么你需要根据子选择:

UPDATE users 
    SET orders = abs(orders)
WHERE count1 = 5;

应该做你想做的事。

或者,如果您想将所有负值转换为正值:

UPDATE users 
    SET orders = abs(orders)
WHERE orders < 0;