<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近工作中,使用到了insert ignore into語法,感覺這個語法還是挺有用的,就記錄下來做個總結。
insert ignore into
: 忽略重複的記錄,直接插入資料。包括兩種場景:
insert ignore into會給出warnings,show warnings就可以看到提示主鍵衝突;
[test]> create table tt(c1 int primary key, c2 varchar(50))engine = xx; Query OK, 0 rows affected (0.21 sec) [test]> insert into tt values(1, "aaa"), (2, "bbb"), (3, "ccc"); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 [test]> select * from tt; +----+------+ | c1 | c2 | +----+------+ | 1 | aaa | | 2 | bbb | | 3 | ccc | +----+------+ 3 rows in set (0.01 sec) [test]> [test]> insert ignore into tt values(1, "aaa"), (2, "bbb"), (3, "ccc"); Query OK, 0 rows affected, 3 warnings (0.01 sec) Records: 3 Duplicates: 3 Warnings: 3 [test]> [test]> select * from tt; +----+------+ | c1 | c2 | +----+------+ | 1 | aaa | | 2 | bbb | | 3 | ccc | +----+------+ 3 rows in set (0.00 sec)
使用insert ignore into語句時,如果主鍵衝突,只是提示"warnings"。
如果使用insert into語句時,如果主鍵衝突直接報錯。
insert into 與 insert ignore into 都是直接插入資料
[test]> create table t2(c1 int, c2 varchar(50))engine = xxx; Query OK, 0 rows affected (0.05 sec) [test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc"); Query OK, 3 rows affected (0.03 sec) Records: 3 Duplicates: 0 Warnings: 0 GreatDB Cluster[test]> select * from t2; +------+------+ | c1 | c2 | +------+------+ | 1 | aaa | | 2 | bbb | | 3 | ccc | +------+------+ 3 rows in set (0.00 sec) [test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc"); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 [test]> insert into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc"); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 [test]> select * from t2; +------+------+ | c1 | c2 | +------+------+ | 1 | aaa | | 2 | bbb | | 3 | ccc | | 1 | aaa | | 2 | bbb | | 3 | ccc | | 1 | aaa | | 2 | bbb | | 3 | ccc | +------+------+ 9 rows in set (0.00 sec) [test]> insert ignore into t2 values(1, "aaa"), (2, "bbb"), (3, "ccc"); Query OK, 3 rows affected (0.03 sec) Records: 3 Duplicates: 0 Warnings: 0
因此,insert ignore into主要是忽略重複的記錄,直接插入資料。
首先,SQL語句:
<insert id="addTerm" parameterType="String"> insert ignore into term(term) VALUES (#{term}) </insert>
然後,資料庫表:
簡單的不能再簡單的一張表:解釋一下,id是自增的,同時也是主鍵,term就是term嘍,其他的外來鍵、索引什麼的都沒有。
要求是:不能使term重複插入;
剛開始認為就是判斷的插入的資料是否重複,然後發現不是這樣的,它判斷的是主鍵或者索引是否重複(更準確的來說是忽略主鍵衝突時報的錯誤)。
所以在這裡要說說這個自增的id了,因為在insert ignore into插入的時候你的現在將要插入的資料的id已經是增加一了,所以你的這個自增主鍵id是無論如何也不能相等的,所以自然你的資料也就不會聽話的把重複的資料不插入,這也就是為什麼,即使ignore時沒有插入資料它的自增的鍵也會跳過,所以這個要注意。
解決辦法就是新增個索引就歐克了唄
因為重複的時候它的自增的鍵依然會增加,所以當資料的重複率很高的時候,可以考慮把自增的鍵搞成自己控制的一個因素,手動自增,豈不美滋滋?
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45