在SQL上可能是以下情况吗? (使用SQLITE3)
UPDATE Table SET
Value1 = (SELECT ...)
Value2 = Value3/Value1; # The new value1!!! Not the value currently on the DB
现在,我需要执行以下操作:
UPDATE Table SET
Value1 = (SELECT ...)
Value2 = Value3/(SELECT ...);
这使得代码很长。想象一下,不仅是我要更新的Value1,而且还有其他字段。
因此,我发现的唯一解决方案是进行2次更新。第一:
UPDATE Table SET
Value1 = (SELECT ...);
然后
UPDATE Table SET
Value2 = Value3/Value1;
有人用更“美丽”的方式做到这一点吗?
谢谢,
最佳答案
在SQLite 3.8.3或更高版本中,可以使用common table expression:
WITH u(v) AS (
SELECT ...
)
UPDATE MyTable
SET Value1 = (SELECT v FROM u),
Value2 = Value3 / (SELECT v FROM u);
(这甚至适用于相关的子查询。)
关于sql - 如何在修改并随后使用字段的情况下运行SQL UPDATE查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129222/