programing

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

mbctv 2023. 4. 6. 23:28
반응형

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 (...);

...특히 (적어도 IIRC는) 엄격한 ANSI에 준거하지 않게 되어, 복수의 플랫폼에 기입할 때에 불필요한 장해가 발생할 가능성이 있어, 바닐라 DML 의 기본을 학습하는 신규 유저에게 복잡성과 혼란이 생깁니다.

이렇게 하면 에일리어스가 필요 없습니다.

DELETE dbo.foods WHERE name IN (...);

단, 코멘트가 시사하는 바와 같이 다른 쿼리 폼(예를 들어 상관 관계, 결합, 결합, 결합, 결합, 결합, 결합, 결합, 결합 등)이 필요할 수 있습니다.EXISTS, 등)을 사용하면 SQL Server에서 다음을 사용하여 이를 수행할 수 있습니다.

DELETE f
  FROM dbo.foods AS f
  INNER JOIN dbo.allergies AS a
  ON f.FoodId = a.FoodId;

이 쿼리는 {not SQL Server}에서 다르게 구성해야 할 수 있습니다.

delete 문에 이상한 구문이 있습니다.그건 이런 식이다:

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

언급URL : https://stackoverflow.com/questions/11005209/why-cant-i-use-an-alias-in-a-delete-statement

반응형