Pregunta

¿Cómo puedo corregir lo siguiente para no recibir un error de sintaxis en 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
)
¿Fue útil?

Solución

Para alias el nombre que debe usar 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)

O alias la subconsulta:

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

Otros consejos

Sin probar ...

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
                )

hay 2 sintaxis aquí. Para usar un alias como destino de la actualización, haga lo siguiente:

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 estoy entendiendo correctamente, esto es lo que estás tratando de hacer. Sin embargo, no estoy seguro de que la primera parte de la cláusula WHERE sea realmente necesaria a menos que haya un montón de filas ...

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

ACTUALIZAR Emp SET UserName = Left (FirstName, 1) + LastName DONDE NO EXISTE (    SELECCIONAR *    De emp e    WHERE e.UserName = Left (emp.FirstName, 1) + emp.LastName )

Ha pasado un tiempo desde que probé esta sintaxis ... pero en SQL Server puede especificar una actualización.

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
)

EDIT : mi sintaxis ciertamente se ejecuta pero no estoy seguro de que sea correcta. Independientemente de si es correcto o no, sugeriría usar el alias en la declaración de actualización solo para asegurar que otros puedan comprender mejor lo que está haciendo.

UPDATE e1 SET 
...
FROM Emp e1
...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top