Chciałbym sortować wierszy zwracanych przez instrukcję UPDATE, ale nie ma bezpośredni sposób to zrobić zgodnie z msdn page for the OUTPUT Clause, który mówi:Jak posortować zestaw wyników instrukcji UPDATE, która używa klauzuli OUTPUT?
SQL Server nie gwarantuje kolejności, w której wiersze są przetwarzane i zwracane przez instrukcje DML przy użyciu klauzuli OUTPUT.
Ponieważ nie mogę po prostu przysłać "zamówienie" na moje pierwotne zapytanie, moim następnym podejściem jest po prostu umieszczenie wyników w tymczasowej tabeli lub zmiennej tabeli, a następnie wybór i zamówienie z tego. Powinienem być w stanie znaleźć rozwiązanie przy użyciu tabel tymczasowych, ale nie sądzę, abym kiedykolwiek wcześniej używał zmiennej tabeli. Czy istnieje powód, aby preferować jeden w stosunku do drugiego w tym kontekście? Czy istnieje lepszy sposób, aby uzyskać posortowane wyniki z klauzuli OUTPUT (tj. W/out przy użyciu zmiennej tabeli lub zmiennej tabeli)?
Platforma DB jest SQL Server 2005.
Oto oryginalne zapytanie; Chcę sortować w polu ReleaseDate.
Update dbo.WFItem
Set ApprovedDate = getdate()
Output inserted.WFItemID, inserted.Title, inserted.Teaser
Where ApprovedDate is null
tabela działa przeciwko wygląda mniej więcej tak:
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 dla klauzuli OUTPUT –