문제

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
...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top