sql怎么判断插入的值已经有了或者相同的数据就不插入呢

 我来答
cygcyg201061ad7
2013-08-28 · TA获得超过1433个赞
知道小有建树答主
回答量:1086
采纳率:58%
帮助的人:531万
展开全部
用IF NOT EXIsTS(SELECT 列出的字段 FROM 表名 WHERE 条件)
INSERT .........-----插入语句
SQL的艺术
推荐于2017-09-22 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3322

向TA提问 私信TA
展开全部

判断是否存在相同数据,一般使用【Exists】函数判断。


EXISTS

    指定一个子查询,检测行的存在。 

语法

    EXISTS subquery

参数

    subquery

    是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。有关更多信息,请参见 SELECT 中有关子查询的讨论。 

结果类型

    Boolean

结果值

    如果子查询包含行,则返回 TRUE。


例如:表【dbo.tb_e_User】,其中列【UserID】不允许重复

if exists(select 0 from dbo.tb_b_User where UserID='TestUserID')
begin
    raiserror 50001 '用户名已存在,请不要重复添加。'
end
else
begin
    insert into dbo.tb_b_User (UserID) values ('TestUserID')
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chen_hongyang
2013-08-28 · TA获得超过5447个赞
知道大有可为答主
回答量:2790
采纳率:91%
帮助的人:845万
展开全部
用触发器‍
create TRIGGER 触发器名
ON 表
FOR insert
AS
begin
declare @a varchar
---定义需要判断的字段
set @a = ''
select @a = a from inserted
if exists (select 1 from 表 where @a = a)
---判断值是否有了或者相同,或者你改成需要的判断语句
ROLLBACK TRANSACTION
---回滚操作
end
追问

那要是多字段怎么写呢,还有这个错:

追答
这里SQL语句,你是SQL数据库的吗?
多个字段需要定义多个变量,如有字段a,b,c,d
declare @a varchar
declare @b varchar
declare @c varchar
declare @d varchar
set @a = ''
set @b = ''
set @c = ''
set @d = ''
select @a = a from inserted
select @b = b from inserted
select @c = c from inserted
select @d = d from inserted
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a800768
2013-08-28 · TA获得超过1841个赞
知道大有可为答主
回答量:1928
采纳率:0%
帮助的人:1714万
展开全部
将表设置主键约束,重复的值就插不进去了。插入时会报键值错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浅黄却百里1
2013-08-28 · TA获得超过504个赞
知道小有建树答主
回答量:482
采纳率:0%
帮助的人:254万
展开全部
没有简单的方法,都insert 进去之后,在distinct 吧,看看能不能行
追问
我的意思就是不插入冗余的值
追答
如果非要这么弄写一个存储过程吧,而且效率目测不会太高,每插入一条之前,都先去比较一下,会很慢,还不如把冗余的数据插进去,再往外剔除呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式