Question

Comment puis-je corriger les éléments suivants afin de ne pas recevoir d'erreur de syntaxe dans 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
)
Était-ce utile?

La solution

Pour aliaser le nom que vous devez utiliser 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)

Ou alias la sous-requête:

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

Autres conseils

Non testé ...

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
                )

il y a 2 syntaxes ici. Pour utiliser un alias comme cible de la mise à jour, procédez comme suit:

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

Si je comprends bien, voici ce que vous essayez de faire. Bien que je ne sois pas sûr que la première partie de la clause WHERE soit vraiment nécessaire à moins d’une tonne de lignes ...

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

UPDATE Emp SET UserName = Left (Prénom, 1) + Nom OU N'EXISTE PAS (    SELECT *    DEPUIS Emp e    WHERE e.UserName = Left (emp.Nom, 1) + emp.Nom )

Cela fait un moment que je n'ai pas essayé cette syntaxe ... mais dans SQL Server, vous pouvez spécifier un à partir d'une mise à jour.

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
)

MODIFIER : ma syntaxe est certainement valable, mais je ne suis pas certaine qu'elle soit correcte. Que ce soit correct ou non, je suggérerais d'utiliser l'alias de la déclaration de mise à jour simplement pour que les autres puissent mieux comprendre ce que vous faites.

UPDATE e1 SET 
...
FROM Emp e1
...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top