INSERT INTO table_listnames (name, address, tele)
SELECT * FROM (SELECT 'Unknown' AS name, 'Unknown' AS address, '022' AS tele) AS tmp
WHERE NOT EXISTS (
SELECT name FROM table_listnames WHERE name = 'Rupert'
) LIMIT 1;
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
目前大概 1000 条 700ms,这个 sql 返回值可以记录重复的数量
1
deplivesb 2021-09-17 15:54:55 +08:00 1
如果根据主键判断存在 我一般用 ignore
|
2
aitaii 2021-09-17 15:56:19 +08:00
不存在,插入 = 存在,不插入 or 存在,更新列?
insert ignore into 或者 insert into on duplicate key update |
3
eason1874 2021-09-17 16:01:13 +08:00
如果 name 是唯一的,可以用 INSERT IGNORE INTO
|
4
msg7086 2021-09-17 16:32:56 +08:00
唯一索引然后条件插入就行了。
|
5
wuwukai007 OP |
6
w7938940 2021-09-17 17:55:11 +08:00
|
7
quanqiubiannuan 2021-09-17 17:56:33 +08:00
replace into
|
8
dusu 2021-09-17 23:28:03 +08:00 via iPhone
要快 就做倒排~
|
9
byzf 2021-09-18 10:20:12 +08:00
ON DUPLICATE KEY UPDATE ?
|
10
lolizeppelin 2021-09-21 11:54:18 +08:00
这种都算邪道....
正常业务新增和更新本来就是分开的 正常业务流程情况下, 发现 update 更新行数不匹配时才 insert 出现大量 update 无匹配应该检查业务流程和代码而不是走捷径 |