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