Iam尝试插入记录,我想检查它是否已经不存在于表中。SQL NOT IN功能
我尝试
INSERT INTO emp (empno, name)
VALUES(2, 'ram')
WHERE empno NOT IN (select empno from emp);
,但它显示错误 'incorrect syntax near where
'
Iam尝试插入记录,我想检查它是否已经不存在于表中。SQL NOT IN功能
我尝试
INSERT INTO emp (empno, name)
VALUES(2, 'ram')
WHERE empno NOT IN (select empno from emp);
,但它显示错误 'incorrect syntax near where
'
您可以使用下面的查询将记录插入到EMP 如果你是在一次插入一条记录,然后下面的查询将是最好的工作,因为它可以...
insert into emp (empno,empname)
select distinct empno,empname
from (2 empno, 'ram' empname) as a
where a.empname not in (select empname from emp)
如果你愿意插入多条记录,然后随便找下面的查询
insert into emp (empno,empname)
select max(empno),empname
from (select 2 empno, 'ram' empname
union
select 3 empno, 'ram1' empname
union
select 4 empno, 'ram' empname
) as a
where a.empname not in (select empname from emp)
group by empname
你不能对INSERT
声明WHERE
条款,你有WHERE
只有SELECT/UPDATE
如果与您合作条款MySQL,你可以这样做:
insert into emp (empno, name) values(2, 'ram') ON DUPLICATE KEY UPDATE name = 'ram'
如果你有名字列unique
指数,你会很安全
那么,如何在插入前检查重复记录 –
你可能会寻找类似
insert into emp (empno, name)
SELECT 2 , 'ram'
FROM emp
WHERE 2 not in (select empno from emp)
???
为什么downvote?这是正确答案,ANSI SQL,AFAIK。 –
如果该行存在,您可以使用INSERT IGNORE
无提示失败。它会尝试插入,但如果密钥存在,它将不会执行任何操作。
INSERT IGNORE INTO emp (empno, name) VALUES (2, 'ram')
你在使用什么SQL服务器? – Trott