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

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

2019-10-05 · 还没有填写任何签名哦
四舍五不入6
采纳数:27 获赞数:71371

向TA提问 私信TA
展开全部

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语句大全

liuyx_know
推荐于2017-11-23 · TA获得超过425个赞
知道小有建树答主
回答量:506
采纳率:100%
帮助的人:412万
展开全部
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

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钊悌EK
2010-09-07 · TA获得超过151个赞
知道答主
回答量:74
采纳率:0%
帮助的人:88.2万
展开全部
方法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 行受影响)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lirenjucn
2010-09-07 · 超过73用户采纳过TA的回答
知道答主
回答量:174
采纳率:0%
帮助的人:163万
展开全部
if not exists(select * from T where field1=插入值)// 判断插入值是否不存在,不存在则执行插入
begin
insert into T(field1)
values(插入值)
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a14540ab0
2010-09-07 · TA获得超过240个赞
知道小有建树答主
回答量:454
采纳率:0%
帮助的人:338万
展开全部
如果操作频繁,倒不如加个触发器
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式