2
我想用INSERT ... ON DUPLICATE KEY UPDATE
执行一点点复杂的upsert操作。但我无法实现它的工作。MySQL upsert with extra check
这是我想要做什么:
- 尝试插入一条记录。如果插入成功,那很好。
- 如果该记录存在,请更新记录。
- 更新记录时,如果check_status字段为1,则保留说明和注释字段。
- 更新记录时,它的check_status字段为0,然后更新描述和注释字段。
之前写出来的SQL,让我们假设存在some_table有如下记载:
column name | val
-----------------+-------------------------
some_unique_key | 32
description | existing description
comment | existing comment
check_status | 1
所以为了做到我上面描述的操作,我使用的SQL如下:
INSERT INTO some_table ('description', 'comment', 'some_unique_key')
VALUES ('some description', 'some comment', 32)
ON DUPLICATE KEY UPDATE
description = IF(check_status = 1, VALUES(description), 'some description')
comment = IF(check_status = 1, VALUES(comment), 'some comment')
我认为VALUES(描述)会给我数据库表中现有记录的值(即'现有描述')。但是,它似乎给了我想要插入的东西,即'一些描述'。
有没有人知道如何正确使用SQL来做到这一点。尝试插入时引用现有记录中值的最佳方法是什么?
哈哈。哎唷,就这么简单!谢谢你的回答@eggyal! – 2013-02-09 23:44:42