在sql server中可以使用如下代码:
if exists(select * from t where id = 3) then
-- do something
-- do another thing
end if
但是mysql是不支持这种语法的,不过mysql的insert语句提供了这一场景的替代方案:
假定有如下表定义:
CREATE TABLE `t` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`updateTimes` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
假定我有这样的需求,如果数据库中存在id为xx的记录那么则更新他的updateTimes否则插入新纪录,可以通过下面的sql语句实现:
INSERT INTO t (id,`name`,updateTimes) VALUES(3,'abc',1)
ON DUPLICATE KEY UPDATE updateTimes = updateTimes +1;
需要注意的是,使用ON DUPLICATE KEY UPDATE必须保证表有主键或者唯一索引。
--转自