mi piacerebbe ordinare le righe restituite da un'istruzione UPDATE, ma non c'è modo diretto per farlo secondo il msdn page for the OUTPUT Clause, che dice:Come ordinare il set di risultati di un'istruzione UPDATE che utilizza la clausola OUTPUT?
SQL Server non garantisce l'ordine in cui le righe vengono elaborate e restituito dalle dichiarazioni DML utilizzando la clausola OUTPUT.
Dal momento che non posso semplicemente virare "ORDER BY" sul mio query originale, il mio prossimo approccio è quello di mettere solo i risultati in una variabile di tabella o una tabella temporanea, quindi selezionare e ordinare da questo. Dovrei essere in grado di capire una soluzione usando tabelle temporanee, ma non credo di aver mai usato una variabile di tabella prima. C'è un motivo per preferire l'uno rispetto all'altro in questo contesto? O c'è un modo migliore per ottenere risultati ordinati da una clausola OUTPUT (cioè senza una tabella temporanea o una variabile di tabella)?
La piattaforma DB è SQL Server 2005.
Ecco la query originale; Voglio ordinare nel campo ReleaseDate.
Update dbo.WFItem
Set ApprovedDate = getdate()
Output inserted.WFItemID, inserted.Title, inserted.Teaser
Where ApprovedDate is null
La tabella si corre contro sembra qualcosa di simile:
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 per clausola OUTPUT –