Mysql在insert记录时判断记录是否存在
2010年04月2日有时为了避免记录重复需要在插入之前判断相同关键字的记录是否已经存在。如果已经做了关键字的唯一索引,在插入记录时如果有重复的话会返回错误提示,也就不用操心了。如果没有做唯一索引的话,可以通过使用EXISTS条件语句来防止重复。
例如,从表sender中读取数据来插入到表receiver中,要求id不重复:
INSERT INTO receiver (id, name) SELECT id, name FROM sender WHERE not exists (select * from receiver where receiver.id = sender.id);
但如果要插入的是直接的数据怎么办?可以用dual表来转换:
INSERT INTO receiver (id, name) SELECT '123', 'abc' FROM dual WHERE not exists (select * from receiver where receiver.id = '123');
dual表是一个虚拟的表,可以用于需要采用select直接输入值的场合。