me gustaría ordenar las filas devueltas por una instrucción UPDATE, pero no hay forma directa de hacerlo de acuerdo con el msdn page for the OUTPUT Clause, que dice:¿Cómo se ordena el conjunto de resultados de una instrucción UPDATE que usa la cláusula OUTPUT?
SQL Server no garantiza el orden en que se procesan las filas y devuelto por declaraciones DML utilizando la cláusula OUTPUT.
Dado que no puedo simplemente colocar "ordenar por" en mi consulta original, mi próximo enfoque es simplemente colocar los resultados en una tabla temporal o tabla variable, y luego seleccionar y ordenar a partir de eso. Debería ser capaz de encontrar una solución usando tablas temporales, pero no creo que alguna vez haya usado una variable de tabla. ¿Hay alguna razón para preferir una sobre la otra en este contexto? ¿O hay una forma mejor de obtener resultados ordenados de una cláusula OUTPUT (es decir, sin usar una tabla temporal o variable de tabla)?
La plataforma de base de datos es SQL Server 2005.
Aquí está la búsqueda original; Quiero ordenar en el campo ReleaseDate.
Update dbo.WFItem
Set ApprovedDate = getdate()
Output inserted.WFItemID, inserted.Title, inserted.Teaser
Where ApprovedDate is null
La tabla que se ejecuta en contra tiene la siguiente apariencia:
CREATE TABLE [dbo].[WFItem](
[WFItemID] [int] IDENTITY(1,1) NOT NULL,
[Title] [varchar](255) NULL,
[Teaser] [varchar](255) NULL,
[ReleaseDate] [datetime] NULL,
[ApprovedDate] [datetime] NULL,
[SentDate] [datetime] NULL,
CONSTRAINT [PK_WFItem] PRIMARY KEY CLUSTERED
(
[WFItemID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
+1 por cláusula OUTPUT –