栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

仅当记录不存在时才将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仍将它们视为值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号