[{"data":1,"prerenderedAt":182},["ShallowReactive",2],{"blog:\u002Fblog\u002F2016\u002F04\u002F01\u002Fmysql-insert-ignore-into-replace-into\u002F":3},{"id":4,"title":5,"body":6,"categories":168,"comments":36,"date":170,"description":171,"draft":172,"extension":173,"legacySlug":174,"meta":175,"navigation":36,"path":176,"seo":177,"stem":178,"tags":179,"updated":180,"__hash__":181},"blog\u002Fblog\u002F2016\u002F04\u002F01\u002Fmysql-insert-ignore-into-replace-into.md","MySQL中的insert ignore into, replace into等的一些用法总结(转载)",{"type":7,"value":8,"toc":166},"minimark",[9,13,88,93,96,105,109,112,121,125,128,137,141,144,153,162],[10,11,12],"p",{},"在MySQL中进行条件插入数据时，可能会用到以下语句，现小结一下。我们先建一个简单的表来作为测试：",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-mysql shiki shiki-themes github-light github-dark","CREATE TABLE `books` (\n\n `id` INT(11) NOT NULL AUTO_INCREMENT,\n\n `name` VARCHAR(200) NOT NULL,\n\n PRIMARY KEY (`id`),\n\n UNIQUE KEY `NewIndex1` (`name`)\n\n) ENGINE=InnoDB DEFAULT CHARSET=utf8;\n","mysql","",[21,22,23,31,38,44,49,55,60,66,71,77,82],"code",{"__ignoreMap":19},[24,25,28],"span",{"class":26,"line":27},"line",1,[24,29,30],{},"CREATE TABLE `books` (\n",[24,32,34],{"class":26,"line":33},2,[24,35,37],{"emptyLinePlaceholder":36},true,"\n",[24,39,41],{"class":26,"line":40},3,[24,42,43],{}," `id` INT(11) NOT NULL AUTO_INCREMENT,\n",[24,45,47],{"class":26,"line":46},4,[24,48,37],{"emptyLinePlaceholder":36},[24,50,52],{"class":26,"line":51},5,[24,53,54],{}," `name` VARCHAR(200) NOT NULL,\n",[24,56,58],{"class":26,"line":57},6,[24,59,37],{"emptyLinePlaceholder":36},[24,61,63],{"class":26,"line":62},7,[24,64,65],{}," PRIMARY KEY (`id`),\n",[24,67,69],{"class":26,"line":68},8,[24,70,37],{"emptyLinePlaceholder":36},[24,72,74],{"class":26,"line":73},9,[24,75,76],{}," UNIQUE KEY `NewIndex1` (`name`)\n",[24,78,80],{"class":26,"line":79},10,[24,81,37],{"emptyLinePlaceholder":36},[24,83,85],{"class":26,"line":84},11,[24,86,87],{},") ENGINE=InnoDB DEFAULT CHARSET=utf8;\n",[89,90,92],"h5",{"id":91},"_1insert-ignore-into","1.insert ignore into",[10,94,95],{},"当插入数据时，如出现错误时，如重复数据，将不返回错误，只以警告形式返回。所以使用ignore请确保语句本身没有问题，否则也会被忽略掉。例如：",[14,97,99],{"className":16,"code":98,"language":18,"meta":19,"style":19},"INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')\n",[21,100,101],{"__ignoreMap":19},[24,102,103],{"class":26,"line":27},[24,104,98],{},[89,106,108],{"id":107},"_2on-duplicate-key-update","2.on duplicate key update",[10,110,111],{},"当primary或者unique重复时，则执行update语句，如update后为无用语句，如id=id，则同1功能相同，但错误不会被忽略掉。例如，为了实现name重复的数据插入不报错，可使用一下语句：",[14,113,115],{"className":16,"code":114,"language":18,"meta":19,"style":19},"INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id\n",[21,116,117],{"__ignoreMap":19},[24,118,119],{"class":26,"line":27},[24,120,114],{},[89,122,124],{"id":123},"_3insert-select-where-not-exist","3.insert … select … where not exist",[10,126,127],{},"根据select的条件判断是否插入，可以不光通过primary 和unique来判断，也可通过其它条件。例如：",[14,129,131],{"className":16,"code":130,"language":18,"meta":19,"style":19},"INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)\n",[21,132,133],{"__ignoreMap":19},[24,134,135],{"class":26,"line":27},[24,136,130],{},[89,138,140],{"id":139},"_4replace-into","4.replace into",[10,142,143],{},"如果存在primary or unique相同的记录，则先删除掉。再插入新记录。",[14,145,147],{"className":16,"code":146,"language":18,"meta":19,"style":19},"REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books\n",[21,148,149],{"__ignoreMap":19},[24,150,151],{"class":26,"line":27},[24,152,146],{},[10,154,155,156],{},"转载： ",[157,158,159],"a",{"href":159,"rel":160},"http:\u002F\u002Fwww.2cto.com\u002Fdatabase\u002F201108\u002F99073.html",[161],"nofollow",[163,164,165],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":19,"searchDepth":33,"depth":33,"links":167},[],[169],"Mysql","2016-04-01 10:46:25","在MySQL中进行条件插入数据时，可能会用到以下语句，现小结一下。我们先建一个简单的表来作为测试： 1.insert ignore into 当插入数据时，如出现错误时，如重复数据，将不返回错误，只以警告形式返回。所以使用ignore请确保语句本身没有问题，否则也会被忽略掉。例如： 2.on dup",false,"md","mysql-insert-ignore-into-replace-into",{},"\u002Fblog\u002F2016\u002F04\u002F01\u002Fmysql-insert-ignore-into-replace-into",{"title":5,"description":171},"blog\u002F2016\u002F04\u002F01\u002Fmysql-insert-ignore-into-replace-into",[18],null,"28ZcTI7sBcLPBrLCZJ5gjUb1WlsRVH1A9Mm-jyrlLtc",1783807996125]