Frage

Wie kann ich das korrigieren der folgenden, so dass ich don ' T erhalten ein syntax-Fehler in 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
)
War es hilfreich?

Lösung

Alias den Namen, den Sie verwenden müssen, AUS:

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)

Oder alias-die sub-Abfrage:

UPDATE Emp 
SET UserName = Left(FirstName,1)+LastName
WHERE NOT EXISTS(   
  SELECT * FROM Emp E    
  WHERE E.UserName=Left(Emp.FirstName,1)+Emp.LastName)

Andere Tipps

Ungeprüfte ...

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
                )

es gibt 2 Syntax hier.Um einen alias zu verwenden, die als Ziel des Updates Sie Folgendes tun:

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

Wenn ich richtig zu verstehen, das ist, was Sie versuchen zu tun. Obwohl, ich bin der erste Teil der WHERE-Klausel nicht sicher, ob wirklich notwendig ist, es sei denn, es gibt eine Tonne von Zeilen ...

UPDATE Emp
SET UserName = Left(FirstName,1)+LastName
WHERE UserName<>Left(FirstName,1)+LastName
AND EmpID=1

UPDATE Emp SET Username = Left (Vorname, 1) + Name VZ WO NICHT VORHANDEN (    WÄHLEN *    VON Emp e    WHERE e.UserName = Left (emp.FirstName, 1) + emp.LastName )

Es ist schon eine Weile her, seit ich versucht habe diese syntax...aber in SQL Server können Sie eine aus, die auf ein update.

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
)

BEARBEITEN:Meine syntax sicherlich läuft, aber ich bin nicht sicher, dass es korrekt ist.Unabhängig davon, ob oder nicht es ist richtig, ich würde vorschlagen, mit den alias in der update-Anweisung nur um sicherzustellen, dass können andere besser zu verstehen, was Sie tun.

UPDATE e1 SET 
...
FROM Emp e1
...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top