خطأ في بناء الجملة في عبارة التحديث 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
)
المحلول
لالاسم المستعار اسم يجب استخدام FROM:
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
وUPDATE زقة SET اسم المستخدم = اليسار (الاسم الأول، 1) + اسم العائلة WHERE NOT EXISTS ( تحديد * من زقة ه أين e.UserName = اليسار (emp.FirstName، 1) + emp.LastName )
ولقد كانت فترة من الوقت منذ أن كنت قد حاولت بناء الجملة هذا ... ولكن في 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 e1 SET
...
FROM Emp e1
...