仅当记录不存在时才将SQL插入表中[重复]

仅当记录不存在时才将SQL插入表中[重复],第1张

仅当记录不存在时才将SQL插入表中[重复]

尽管我最初标记为选择的答案是正确的,并且达到了我的要求,但是有一种更好的方法可以做到这一点(其他人也承认但没有考虑)。应该在包含

fund_id
和的表上创建一个复合唯一索引
date

ALTER TABLE funds ADD UNIQUE KEY `fund_date` (`fund_id`, `date`);

然后在插入记录时,在遇到冲突时添加条件:

INSERT INTO funds (`fund_id`, `date`, `price`)    VALUES (23, DATE('2013-02-12'), 22.5)        ON DUPLICATE KEY UPDATE `price` = `price`; --this keeps the price what it was (no change to the table) or:INSERT INTO funds (`fund_id`, `date`, `price`)    VALUES (23, DATE('2013-02-12'), 22.5)        ON DUPLICATE KEY UPDATE `price` = 22.5; --this updates the price to the new value

这将为子查询提供更好的性能,并且表的结构更好。需要注意的是,您的唯一键列中不能包含NULL值,因为MySQL仍将它们视为值。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存