gpt4 book ai didi

mysql - 如何将 INSERT INTO SELECT ON DUPLICATE KEY UPDATE 与 IF 语句一起使用

转载 作者:行者123 更新时间:2023-11-29 15:23:03 32 4
gpt4 key购买 nike

在这里,我尝试在给定条件下在 MySQL 中执行重复键更新记录。假设我有一个名为“Item”的表和另一个名为“Item_backup”的表,其中包含一组应插入到原始“Item”表中的备份记录。两个表的结构相同。

当数据记录插入时,如果有任何重复键,那么我需要检查 insert_date 列,并且只有当“Item”表中的 insert_date 列小于“Item_backup”表中的 insert_date 列。

我使用的查询是,

INSERT INTO ITEM (item_number, price, quantity, insert_date)
SELECT ib.item_number, ib.price, ib.quantity, ib.insert_date
FROM ITEM_backup ib
ON DUPLICATE KEY UPDATE
item_number = IF(@is_a_new_record := insert_date < ib.insert_date, ib.item_number, item_number),
price = IF(@is_a_new_record, ib.price, price),
quantity = IF(@is_a_new_record, ib.quantity, quantity),
insert_date = IF(@is_a_new_record, ib.insert_date, insert_date);

现在错误变得像这样,“SQL错误:字段列表中的列'insert_date'不明确”

谁能指出这个查询有什么问题吗?

最佳答案

终于,我找到了正确的答案。

INSERT INTO ITEM (item_number, price, quantity, insert_date)
SELECT ib.item_number, ib.price, ib.quantity, ib.insert_date
FROM ITEM_backup ib
ON DUPLICATE KEY UPDATE
item_number = IF(@is_a_new_record := ITEM.insert_date < ib.insert_date, ib.item_number, ITEM.item_number),
price = IF(@is_a_new_record, ib.price, ITEM.price),
quantity = IF(@is_a_new_record, ib.quantity, ITEM.quantity),
insert_date = IF(@is_a_new_record, ib.insert_date, ITEM.insert_date);

关于mysql - 如何将 INSERT INTO SELECT ON DUPLICATE KEY UPDATE 与 IF 语句一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59243041/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com