关于insert into 里,带条件判断的sql语句怎么写?

你好! 表T里有字段Field1,已有值,1,2 我现在想插入新值,插入之前判断一下,这个新值是否已存在,已存在的不插入,不存在的则插入。
比如,插入2时,不让插入,
插入3则可以插入。
这个sql语句怎么写,数据库:SQL SERVER 2005.

1、方法一

IF NOT EXISTS(SELECT * FROM TABLE_NAME WHERE FILED1 = 1 ) THEN

INSERT INTO TABLE_NAME VALUES(1

2、将要插入的数据先写入临时表,然后用

INSERT INTO TABLE_NAME

SELECT * FROM #TEMP_TABLE A LEFT JOIN TABLE_NAME ON A.FILED1 = B.FIELD1 WHERE

B.FILED1 IS NULL

扩展资料:

基本语句

1、数据记录筛选:

sql="select * from 数据表 where字段名 = 字段值 order by 字段名[desc]"(按某个字段值降序排列,默认升序ASC)。

sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

sql="select top 10 * from 数据表 where字段名=字段值 order by 字段名 [desc]"

sql="select * from 数据表 where字段名 in ('值1','值2','值3')"

sql="select * from 数据表 where 字段名 between 值1 and 值2"

sql="select 列名1,列名2 from 数据表 where 字段名=字段值 group by 列名1,列名2 " (group by 用来分组,并且只有出现自group by 中的列名,才允许出现在select 语句中)。

2、更新数据记录:

sql="update 数据表 set字段名=字段值 where 条件表达式"

sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

3、删除数据记录:

sql="delete from 数据表 where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

参考资料来源:百度百科-SQL语句大全

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-23
INSERT INTO TABLE_NAME VALUES() 这个语句是不能做判断的,但可以建议你下面的语法实现:
IF NOT EXISTS(SELECT * FROM TABLE_NAME WHERE FILED1 = 1 ) THEN
INSERT INTO TABLE_NAME VALUES(1);

或者将你要插入的数据先写入临时表,然后用
INSERT INTO TABLE_NAME
SELECT * FROM #TEMP_TABLE A LEFT JOIN TABLE_NAME ON A.FILED1 = B.FIELD1 WHERE B.FILED1 IS NULL

参考资料:I

本回答被提问者和网友采纳
第2个回答  2010-09-07
方法1:把Field1设置为唯一列就可以。
方法2:如果非要用sql语句来写的话,给个例子,看能否满足楼主要求:

--语句 (@a为新值)
insert into T select @a where @a not in(select Field1 from T);

======================================
案例:
create table tt(c1 int);
insert into tt values(1);
insert into tt values(2);

--测试1
insert into tt select 4 where 4 not in(select c1 from tt);
(1 行受影响)

--测试2
insert into tt select 2 where 2 not in(select c1 from tt);
(0 行受影响)
第3个回答  2010-09-07
if not exists(select * from T where field1=插入值)// 判断插入值是否不存在,不存在则执行插入
begin
insert into T(field1)
values(插入值)
end
第4个回答  2010-09-07
如果操作频繁,倒不如加个触发器
create trigger [dbo].[t_trigger_feild1_ins] on [dbo].[t]
instead of insert
as
declare @field1value varchar(500)
select @field1value=field1 from inserted
if not exists(select * from T where field1=@field1value)
begin
insert into T(field1) values(@field1value)
end
相似回答