SELECT 쿼리를 사용하여 테이블 변수에서 일부 데이터를 삭제하려고합니다. 다음 코드는 완벽하게 작동합니다.두 삭제 쿼리 간의 차이
DECLARE @sgID int
SET @sgID = 1234
DELETE FROM
@tbl_users
WHERE
(userID NOT IN (
SELECT
userID
FROM
[SGTable]
WHERE
(sgID = @sgID)
))
나는이 쿼리의 속도를 높이려고하고 있으며 다음 방법이 더 좋을 수 있음을 읽습니다. 그러나 다음 코드를 사용할 때 - 모든 레코드가 테이블 변수에서 삭제됩니다.
DELETE
tmp
FROM
@tbl_Users tmp INNER JOIN
[SGTable] sgu ON sgu.userID = tmp.userID
WHERE
(sgu.sgID <> @sgID)
나는 (분명히 잘못)이 두 쿼리가 같은 일 (사용자 아이디가 하위 쿼리에서 발견되지 않는 테이블 변수에 모든 사용자 아이디를 삭제)을 한 것으로 가정. 누구나 두 번째 쿼리 작업에 대한 조언을 제공 할 수 있습니까? 분명히 읽고 유지하기가 쉽습니다.
당신이'와 DELETE'은''SELECT * 교체하고 결과가 설정 볼 수 있을까요? – Kermit
예를 선택하면 테이블 변수에서 삭제해야하는 모든 사용자 ID가 표시됩니다. 나는 왜 delete 문이 다른 모든 행도 제거한다는 이유를 알지 못한다. : - \ – EvilDr
userID가 둘 이상의 sgID와 연관 될 수 있기 때문에 그걸 알아 냈다. 멍청한 멍청한 나. 어쨌든 고마워 :-) – EvilDr