Syntaxfehler in SQL-update-Anweisung
-
05-07-2019 - |
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
)
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
...