sql - 如何在修改并随后使用字段的情况下运行SQL UPDATE查询

标签 sql sqlite sql-update

在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/

相关文章:

mysql - PHP 在迁移失败的情况下恢复数据

mysql - 从表中只选择那些恰好有 4 个作者的书?

sql - 在 SQL Server 中,如何创建表的引用变量?

c - SQLite 和 C 的第一步

sql - 根据计数更新

sql - 我的带有 JOIN 的 UPDATE 的 SQL 语法有什么问题?

java - Hibernate 检查注解

sql - Presto/SQL - 将字符串时间戳转换为日期会引发错误

c# - 使用 sqlite 从数据库中选择字符串值

android - 在选项卡式 Activity 中将 sqlite 数据库中的所有数据显示到 ListView 中