if exists 문을 사용하려고하는데 문제가 있습니다. LOCATION과 NAME이 NEWTABLE에 있는지 확인하고 있습니다. 존재하지 않으면 NewTable에 삽입하려고합니다. 그래서 기본적으로 OldTable에는 레코드가 있지만 newTable에는없는 Location과 Names를 찾으려고합니다. 이 그SQL에 존재하지 않는 경우 사용 방법
create unique index NewTable_Location_Name on NewTable(Location, Name);
참고 : 또한 고유 인덱스를 구축하여 이러한 제한을 적용 할 수
INSERT INTO NewTable(Location, Name)
SELECT Location, Name
FROM OldTable ot
WHERE NOT EXISTS (select 1
from NewTable nt
where nt.LOCATION = ot.LOCATION and nt.NAME = ot.NAME
);
: 감사
다음은이에 대한 not exists
을 사용하는 것이 내 SQL
INSERT INTO NewTable(Location, Name)
SELECT Location, Name
FROM OldTable
WHERE Location and Name NOT IN (select Location, Name from NewTable)
오라클 구문에 가깝습니다. Oracle SQL은 WHERE (위치, 이름) NOT IN (위치 선택, NewTable의 이름) 튜플을 사용할 수 있습니다. 대부분의 다른 dbms에는이 기능이 없으므로 대신 Gordon Linoff가 제시 한대로 EXISTS를 사용해야합니다. –
질문 제목에 이미 해결책이 포함되어 있다면 나는 항상 놀랐습니다. '(NOT) EXISTS'가 눈에 띄게 자주 나타납니다. –