Iam이 레코드를 삽입 하려는데 테이블에 아직 없는지 확인하고 싶습니다.SQL NOT IN 함수
나는
INSERT INTO emp (empno, name)
VALUES(2, 'ram')
WHERE empno NOT IN (select empno from emp);
을 시도하지만 당신은
INSERT
문에
WHERE
절을 가질 수 없습니다
Iam이 레코드를 삽입 하려는데 테이블에 아직 없는지 확인하고 싶습니다.SQL NOT IN 함수
나는
INSERT INTO emp (empno, name)
VALUES(2, 'ram')
WHERE empno NOT IN (select empno from emp);
을 시도하지만 당신은
INSERT
문에
WHERE
절을 가질 수 없습니다
를 살펴 할 수 있습니다 여러 레코드를 삽입하고자하는 경우 ...
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
오류 'incorrect syntax near where
'을 보여줍니다, 당신은 단지 당신이 작업하는 경우 SELECT/UPDATE
와 WHERE
절을 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')
는 또한 당신은 다음처럼 가장 적합한 쿼리를 다음 한 번에 하나 개의 레코드를 삽입하는 경우 EMP 에 레코드를 삽입하는 쿼리를 사용할 수 있습니다 INSERT ... ON DUPLICATE KEY UPDATE
어떤 SQL Server를 사용하고 있습니까? – Trott