[sql] SQL Server 2008에서 테이블 별칭으로 UPDATE SQL을 작성하는 방법은 무엇입니까?
나는 매우 기본이 있습니다 UPDATE SQL
–
UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;
이 쿼리는 Oracle
, Derby
에서 잘 실행 MySQL
되지만 SQL Server 2008
에서는 다음 오류로 실패합니다 .
“메시지 102, 수준 15, 상태 1, 줄 1 ‘Q’근처에 잘못된 구문입니다.”
SQL에서 별명 “Q”를 모두 제거하면 작동합니다.
그러나 별칭을 사용해야합니다.
답변
SQL Server의 업데이트 문에서 별칭을 사용하는 구문은 다음과 같습니다.
UPDATE Q
SET Q.TITLE = 'TEST'
FROM HOLD_TABLE Q
WHERE Q.ID = 101;
여기서 별명은 필요하지 않습니다.
답변
항상 CTE (공통 테이블 형식) 접근 방식을 사용할 수 있습니다.
;WITH updateCTE AS
(
SELECT ID, TITLE
FROM HOLD_TABLE
WHERE ID = 101
)
UPDATE updateCTE
SET TITLE = 'TEST';
답변
Postgres의 특수 사례
위의 솔루션 목록이 작동하지 않습니다. Postgres를위한 솔루션
내가 불을 질렀을 때
UPDATE table Q SET Q.is_active = FALSE ,Q.is_delete = TRUE WHERE Q.name = 'XYZ';
결과 : 오류 : “table”관계의 “q”열이 없습니다.
해결책 SET 데이터 값에 allis를 사용할 필요가 없습니까?
UPDATE table Q SET is_active = FALSE ,is_delete = TRUE WHERE Q.name = 'XYZ';