[sql] DELETE 문에서 별명을 사용할 수없는 이유는 무엇입니까?

Visual Studio 2010의 SQL Server Compact Edition (일반적으로 SQL Server 및 SQL, 잘 모르겠습니다)에서이 명령은 작동합니다.

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))

그러나이 명령은 다음과 같은 오류를 생성합니다. Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))



답변

당신이 말해야 할 테이블의 별칭을 지정하려면 :

DELETE f FROM dbo.foods AS f WHERE f.name IN (...);

DELETE특히 (적어도 IIRC)이 더 이상 엄격한 ANSI를 준수하지 않기 때문에이 특정 진술에 대한 앨리어싱 포인트를 보지 못했습니다 . 그러나 그렇습니다. 의견에서 알 수 있듯이 다른 쿼리 형식 (예 : 상관 관계)이 필요할 수 있습니다.


답변

delete 문에 이상한 구문이 있습니다. 다음과 같이 진행됩니다.

DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))


답변