如何更正以下內容,以便在Microsoft SQL Server 2005中不會收到語法錯誤?SQL更新語句的語法錯誤
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
)
如何更正以下內容,以便在Microsoft SQL Server 2005中不會收到語法錯誤?SQL更新語句的語法錯誤
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的Emp 設置用戶名=左(名字,1)+姓氏 FROM EMPË WHERE NOT EXISTS( SELECT * FROM EMP 其中username =左(E.FirstName,1)+ E.LastName) – 2009-09-10 20:27:37
而你的第二個例子也工作了!是啊! – 2009-09-10 20:30:32
我會在第一個示例中使用別名E,更新E而不是更新Emp 這會阻止您僅突出顯示前兩行並偶然更新整個表。 – HLGEM 2009-09-10 21:39:45
未經測試...
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
)
是啊!這個也工作了! – 2009-09-10 20:29:14
這已經有一段時間,因爲我已經試過這句法......但在SQL Server中,你可以從一個更新的指定。
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語句中使用別名,以確保其他人可以更好地理解您在做什麼。
UPDATE e1 SET
...
FROM Emp e1
...
有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
UPDATE的Emp 設置用戶名=左(名字,1)+姓氏 WHERE NOT EXISTS( SELECT * FROM Ë的Emp WHERE = e.UserName左(emp.FirstName,1)+ emp.LastName )
我不完全知道什麼是錯,但相關子查詢往往*非常*慢。 – Powerlord 2009-09-10 20:17:32
我已經完成了這個過程,但是我似乎想起了與下面答案中描述的技術相關的代碼氣味。 – Mayo 2009-09-10 20:20:57