SQL 업데이트 문의 구문 오류
-
05-07-2019 - |
문제
Microsoft SQL Server 2005에서 구문 오류를받지 않도록 다음을 어떻게 수정할 수 있습니까?
UPDATE Emp E
SET UserName = Left(FirstName,1)+LastName
WHERE EmpID=1
AND NOT EXISTS(
SELECT * FROM Emp
WHERE UserName=Left(E.FirstName,1)+E.LastName
)
해결책
사용해야하는 이름을 별칭으로 다음 :
UPDATE Emp
SET UserName = Left(FirstName,1)+LastName
FROM Emp E
WHERE NOT EXISTS(
SELECT * FROM Emp
WHERE UserName=Left(E.FirstName,1)+E.LastName)
또는 별명 하위 쿼리 :
UPDATE Emp
SET UserName = Left(FirstName,1)+LastName
WHERE NOT EXISTS(
SELECT * FROM Emp E
WHERE E.UserName=Left(Emp.FirstName,1)+Emp.LastName)
다른 팁
테스트되지 않은 ...
UPDATE E
SET UserName = Left(FirstName,1)+LastName
FROM Emp E
WHERE NOT EXISTS(
SELECT * FROM Emp
WHERE UserName=Left(E.FirstName,1)+E.LastName
)
여기에는 2 개의 구문이 있습니다. 별명을 업데이트 대상으로 사용하려면 다음을 수행합니다.
UPDATE e
SET UserName = Left(FirstName,1)+LastName
FROM Emp e
WHERE NOT EXISTS(
SELECT * FROM Emp
WHERE UserName=Left(E.FirstName,1)+E.LastName
)
AND EmpID=1
내가 올바르게 이해한다면 이것이 당신이하려는 일입니다. 그러나, 나는 where 절의 첫 부분이 줄이 많지 않으면 실제로 필요한지 확신하지 못한다 ...
UPDATE Emp
SET UserName = Left(FirstName,1)+LastName
WHERE UserName<>Left(FirstName,1)+LastName
AND EmpID=1
EMP EMP SET USERNAME = LEFT (FirstName, 1)+최후의 이름이 존재하지 않는 경우 (Emp E e.username = Left (Emp.FirstName, 1)+Emp.LastName)
이 구문을 시도한 지 오래되었습니다. 그러나 SQL Server에서는 업데이트에서 A를 지정할 수 있습니다.
UPDATE Emp SET
UserName = Left(FirstName,1)+LastName
FROM Emp e1
WHERE NOT EXISTS (
SELECT *
FROM Emp e2
WHERE e2.UserName=Left(e1.FirstName,1)+e1.LastName
)
편집하다: 내 구문은 확실히 실행되지만 그것이 맞는지 확실하지 않습니다. 그것이 옳은지 여부에 관계없이, 다른 사람들이 당신이하고있는 일을 더 잘 이해할 수 있도록 업데이트 문에 별명을 사용하는 것이 좋습니다.
UPDATE e1 SET
...
FROM Emp e1
...
제휴하지 않습니다 StackOverflow