如果满足条件则更新行,否则不更新列

时间:2019-06-07 14:54:14

标签: mysql

我只想在满足条件的情况下更新行,如果不满足则将值保留在原来的列中

如果finish_date为空,则start_date不应更新,保持原始值。

如果finish_value不为空,请更新start_date

当我运行以下查询时,它将start_date更新为无论传入的值。我在做什么错了?

INSERT INTO barcode_queue (barcode, start_date) VALUES ('X17291211902P02V0010', '2019-06-01 00:00:00') 
    ON DUPLICATE KEY UPDATE 
        start_date = (CASE WHEN finish_date <> NULL THEN VALUES(start_date) ELSE start_date END), 
        finish_date = null;

1 个答案:

答案 0 :(得分:0)

感谢帮助。这是解决方案

INSERT INTO barcode_queue (barcode, start_date) VALUES ('X17291211902P02V0010', '2019-06-01 00:00:00') 
    ON DUPLICATE KEY UPDATE 
                start_date = (CASE WHEN finish_date IS NULL THEN start_date ELSE VALUES(start_date) END), 
                finish_date = null;