【问题标题】:Two separate updates involving different columns in one SQL query两个单独的更新涉及一个 SQL 查询中的不同列
【发布时间】:2020-08-03 16:36:16
【问题描述】:
UPDATE users SET col1 = '' WHERE user_id IN (a, b)
UPDATE users SET col2 = '' WHERE user_id IN (c, d)

是否可以编写一个可以提供相同结果的更新查询?

【问题讨论】:

    标签: mysql sql database relational-database


    【解决方案1】:

    您可以使用case 表达式:

    UPDATE users
        SET col1 = (CASE WHEN user_id IN (a, b) THEN '' ELSE col1 END),
            col2 = (CASE WHEN user_id in (c, d) THEN '' ELSE col2 END)
        WHERE user_id in (a, b, c, d);
    

    【讨论】:

    • 我在使用这个时遇到语法错误#1064,我不知道是什么导致了错误。我正在使用此代码。 UPDATE tb_users SET unique_device_id_reg = (CASE WHEN user_id IN (2403613, 2403614) THEN '' ELSE unique_device_id_reg END), reg_device_token = (CASE WHEN user_id in (2403615, 2403616) THEN '' ELSE reg_device_token END) WHERE user_id in (2403613, 2403614, 2403615, 2403616)
    • 您评论中的查询看起来基本正确。也许您的语句中有杂散的非 ASCII 字符。
    • 我怎样才能删除这些?
    • @NawedDiwan 。 . .您可以尝试重新输入查询。
    • 事实上我也无法做到这一点UPDATE tb_users SET reg_device_token = reg_device_token WHERE user_id = 2403616
    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多