使用另一个列值更新 sql db 表列

Posted

技术标签:

【中文标题】使用另一个列值更新 sql db 表列【英文标题】:Update sql db table columns using another column value 【发布时间】:2022-01-18 01:02:12 【问题描述】:

我有我的病人的这个地址表,其中一个列的整数是自从我最后一次见到病人以来的天数。 我需要使用当前日期(这不是问题)和来自同一个 TABLE 的另一个列值来更新它。

我希望我可以这样做:

      c.execute("""UPDATE addresses SET
      days_since_last_appointment = :day""",
      
      'day': (datetime.now()-       last_appointment_day)
       )

我正在使用 Python 3.9 和 sqlite3

有什么想法吗?

【问题讨论】:

运行代码时会发生什么? ValueError: 时间数据 '.!entry4' 与格式 '%d%m%Y 不匹配 我认为主要问题是在更新一列时访问另一列字符串值 【参考方案1】:

您不能像引用 Python 变量一样引用表列。

您可以在 SQL 查询本身中进行算术运算:

c.execute("""UPDATE addresses
SET days_since_last_appointment = julianday('now') - julianday(last_appointment_day)""")

见Difference between 2 dates in SQLite

【讨论】:

谢谢,这似乎可以工作了,我现在收到一个数据库被锁定的错误,只是在网上看到我需要增加超时但不知道怎么做。把 OPTIONS 放在哪里 ***.com/questions/151026/… 好伙伴。非常感谢!祝你有美好的一天

以上是关于使用另一个列值更新 sql db 表列的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 根据联接表列值更新列值

WordPress 和 SQL - 如果列值不存在,则从另一个表更新和插入

MySQL - 根据更新其他表列值触发更新列值

Oracle SQL:使用中间第三个表引用的另一个表更新表列

如何根据联接更新 Redshift 中的表列值?

SQL将值从一个表列更新到另一个[重复]