특정 테이블에 존재하고 다른 테이블에없는 모든 행을 선택하여 삭제하려고합니다.한 테이블에 존재하고 다른 테이블에는 존재하지 않는 데이터를 삭제 하시겠습니까?
다음 쿼리를 작성하지만 두 테이블에 행이 있습니다!
SELECT UNIQUE b.values_key FROM request_fo a INNER JOIN rm_trans b
ON b.values_key != a.req_year || ',' || a.req_ser
AND b.taskcode = 19
AND b.values_key IS NOT NULL
AND a.req_year IS NOT NULL
AND a.req_ser IS NOT NULL
은 내가 데이터를 request_fo
에 존재하지 rm_trans
에 존재 삭제하려면 다음을 사용하려면 :
DELETE request_fo
FROM request_fo a
INNER JOIN
rm_trans b
ON b.values_key != a.req_year || ',' || a.req_ser
AND b.taskcode = 19
AND b.values_key IS NOT NULL
AND a.req_year IS NOT NULL
AND a.req_ser IS NOT NULL
이 권리인가? WHERE
절에 b.values_key IS NULL
술어,
사용 LEFT JOIN
대신하고 DELETE
절에 테이블 이름 대신 별칭 a
을 사용합니다 :
DELETE a
FROM request_fo a
LEFT JOIN rm_trans b ON b.values_key = a.req_year + ',' + a.req_ser
AND b.taskcode = 19
WHERE b.values_key IS NULL;
여기
다른 DBMS는 DELETE 조작에 대해 다른 구.을 갖습니다. 특히 조인 조작으로 DELETE가 있습니다. Oracle, DB2, Informix, MySQL, PostgreSQL에서 MS SQL Server가 작동하는 것은 자동으로 예측할 수 없습니다. 일반적으로 Sybase에서는 작동하지만 반드시 작동하지는 않습니다. –
@JonathanLeffler : 그럼 할 수있는 구문 무엇 만족의' LEFT request_fo에서 삭제는 b.values_key = a.req_year + ','+ a.req_ser 및 b.taskcode = 19 B의 rm_trans의 B 가입하세요. values_key IS NULL; in informix –