一、语法mysql
if exists (select * from users where name='张三') print 1 ELSE print 0
二、建表语句web
CREATE TABLE [dbo].[users] ( [id] int NOT NULL IDENTITY(1,1) , [name] varchar(50) NULL , [sex] varchar(5) NULL ) GO SET IDENTITY_INSERT [dbo].[users] ON GO INSERT INTO [dbo].[users] ([id], [name], [sex]) VALUES (N'1', N'李四', N'女'); INSERT INTO [dbo].[users] ([id], [name], [sex]) VALUES (N'2', N'张三', N'女'); INSERT INTO [dbo].[users] ([id], [name], [sex]) VALUES (N'3', N'王五', N'男');
三、例子,存在更新,不存在插入sql
if exists (select * from dbo.users s where s.name='张三') update users set sex='男' where name = '张三' ELSE insert into users (name,sex) values ('张三','女')
—————————————————————————————————svg
一、语法sqlserver
replace into 表名(列名1, 列名2, ..., 列名n) VALUES (值1, 值2, ..., 值n);
二、例子ui
replace into students (StuName, Stuid, Class) VALUES ('张三', '123456789', '1234567');
三、语句原理
replace into 语句要求被插入的表须要有已经定义的主键,该语句经过对主键进行检索判断记录是否存在,若记录存在,则对非主键属性进行更新操做;若记录不存在,则插入一条新记录。code
2019.1.7 更新:此处的更新操做指的是按新的数据覆盖该主键标识的记录,而不是针对某些列进行更新server
四、受影响的行数
当相同主键记录存在,且欲更新的数据与已存在的数据彻底相同时(即此时什么都不作),受影响的行数为 1。
当相同主键记录存在,且欲更新的数据与已存在的数据不彻底相同时(即此时会更新数据),受影响的行数为 2。
当相同主键记录不存在时,将插入一条新的记录,受影响的行数为 1。xml