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 年 9 月 17 日 如果根据主键判断存在 我一般用 ignore
|
2
aitaii 2021 年 9 月 17 日
不存在,插入 = 存在,不插入 or 存在,更新列?
insert ignore into 或者 insert into on duplicate key update |
3
eason1874 2021 年 9 月 17 日
如果 name 是唯一的,可以用 INSERT IGNORE INTO
|
4
msg7086 2021 年 9 月 17 日
唯一索引然后条件插入就行了。
|
5
wuwukai007 OP |
6
FarAhead 2021 年 9 月 17 日
|
7
quanqiubiannuan 2021 年 9 月 17 日
replace into
|
8
dusu 2021 年 9 月 17 日 via iPhone
要快 就做倒排~
|
9
byzf 2021 年 9 月 18 日
ON DUPLICATE KEY UPDATE ?
|
10
lolizeppelin 2021 年 9 月 21 日
这种都算邪道....
正常业务新增和更新本来就是分开的 正常业务流程情况下, 发现 update 更新行数不匹配时才 insert 出现大量 update 无匹配应该检查业务流程和代码而不是走捷径 |