복붙노트

[SQL] 왜 DELETE 문에 별칭을 사용할 수 없습니다?

SQL

왜 DELETE 문에 별칭을 사용할 수 없습니다?

의 SQL Server Compact Edition의 비주얼 스튜디오 2010 (나도 몰라 일반적으로 아마 SQL Server 및 SQL)에서,이 명령은 작동합니다 :

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

식별자 F 근처의 오류 :하지만이 명령의 오류가 발생합니다. OUTPUT을 기대.

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

해결법

  1. ==============================

    1.별명에 표는 말을해야 할 것이다 :

    별명에 표는 말을해야 할 것이다 :

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

    나는 특히 (적어도 IIRC) 엄격한 ANSI이 더 이상 부합 함을 선언 이후,이 특정 DELETE 문에 대한 앨리어싱의 점을보고 실패합니다. 그러나 예, 의견 제안으로, 다른 쿼리 형태 (예 : 상관 관계)에 대한 필요가있다.

  2. ==============================

    2.DELETE 문은 이상한 구문이 있습니다. 그것은 다음과 같이 간다 :

    DELETE 문은 이상한 구문이 있습니다. 그것은 다음과 같이 간다 :

    DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))
    
  3. from https://stackoverflow.com/questions/11005209/why-cant-i-use-an-alias-in-a-delete-statement by cc-by-sa and MIT license