¿Buena forma de usar el alias de tabla en la declaración de actualización?


95

Estoy usando SQL Server e intento actualizar filas desde la misma tabla. Quiero usar un alias de tabla para mejorar la legibilidad.

Esta es la forma en que lo estoy haciendo en este momento:

UPDATE ra
SET ra.ItemValue = rb.ItemValue
FROM dbo.Rates ra
INNER JOIN  dbo.Rates rb
ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
AND rb.PriceSched = 't9'

¿Hay formas mejores o más fáciles?


1
Me gusta usar la palabra clave opcional "AS" (FROM dbo.Rates AS ra) para mejorar la legibilidad.
Robert S.

3
Usaría la sintaxis ANSI JOIN adecuada FROM dbo.Rates ra INNER JOIN dbo.Rates rb ON ra.ResourceID = rb.ResourceID: es el estándar, es más claro y evita cualquier producto cartesiano no deseado al olvidar las condiciones JOIN en su cláusula WHERE ....
marc_s

1
marc_s tiene un buen punto; He editado el SQL para usar una sintaxis JOIN más clara
realcals

Respuestas:


46
UPDATE ra 
   SET ra.ItemValue = rb.ItemValue
  FROM dbo.Rates ra
 INNER JOIN dbo.Rates rb
         ON ra.ResourceID = rb.ResourceID
WHERE ra.PriceSched = 't8'
  AND rb.PriceSched = 't9';

Esto podría ayudar a mejorar el rendimiento.


2
¿¿Por qué?? ¡No cambiaste nada excepto los cosméticos!
underscore_d

1

Alias ​​de tabla en Consulta de actualización en T-SQL (Microsoft SQL). para MS SQL Server 2008 R2 funciona bien

UPDATE A_GeneralLedger  set ScheduleId=g.ScheduleId
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.