【问题标题】:how to update value with several conditions如何在多个条件下更新值
【发布时间】:2017-12-30 22:39:59
【问题描述】:

我有下表:

id - phone - value
1  - 1234  - null
2  - 4321  - null
3  - 1234  - null

我需要用 max(id) 更新电话“1234”的“value”列

id - phone - value
1  - 1234  - null
2  - 4321  - null
3  - 1234  - *updated

我多次尝试通过以下查询来执行此操作:

cur.execute("UPDATE online_booking SET st1 = (%s) HAVING max(ID) and phone = (%s)", (st1, phone))

但它显示“在“HAVING”处或附近出现语法错误”

【问题讨论】:

    标签: python mysql python-3.x postgresql psycopg2


    【解决方案1】:

    您应该通过这样的子查询过滤id

    UPDATE online_booking 
    SET st1 = '*update' 
    WHERE id = (
        SELECT max(id)
        FROM online_booking
        WHERE phone = '1234')
    

    【讨论】:

      【解决方案2】:

      只有在你之前使用过 GROUP BY 的情况下才能使用 HAVING。

      你正在寻找类似的东西

      UPDATE online_booking SET st1 = (%s) WHERE phone = (%s) ORDER BY ID DESC LIMIT 1 此查询将仅更新第一行。

      【讨论】:

      • 谢谢,但我需要更新具有最大 ID 号的单元格
      猜你喜欢
      • 2020-12-21
      • 2021-11-16
      • 1970-01-01
      • 2017-09-26
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      相关资源
      最近更新 更多