my sql 数据库语句 我要添加一条数据,但是要先判断这个数据存不存在可...
发布网友
发布时间:2022-05-05 06:39
我来回答
共4个回答
热心网友
时间:2022-05-05 08:34
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
第一种形式类似于insert into的用法,
第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。
第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
使用要注意 把需要判断是否重复的字段设置一个唯一索引 UNIQUE 才可以生效
可以设置2个字段以上的组合做唯一索引
热心网友
时间:2022-05-05 09:52
insert into table_name ( col_name1,col_name2,......)
select value1,value2,....
where not exists ( select 1 from table_name a where ........ )
热心网友
时间:2022-05-05 11:27
insert into table_name ( col_name1,col_name2,......)
select value1,value2,....
where not exists ( select 1 from table_name a where ........ )追问好像不行。。。。
追答是有报什么错吗?
热心网友
时间:2022-05-05 13:18
replace into 你看看 是否符合需求