Я бы хотел отсортировать строки, возвращаемые оператором UPDATE, но прямого способа сделать это в соответствии со страницей msdn для предложения OUTPUT , которая гласит:
SQL Server не гарантирует порядок, в котором строки обрабатываются и возвращаются операторами DML с использованием предложения OUTPUT.
Поскольку я не могу просто прикрепить "order by" к своему исходному запросу, мой следующий подход - просто поместить результаты во временную таблицу или переменную таблицы, а затем выбрать и упорядочить из этого. Я должен быть в состоянии найти решение, используя временные таблицы, но я не думаю, что когда-либо использовал переменную таблицы раньше. Есть ли причина в этом контексте отдавать предпочтение одному другому? Или есть лучший способ получить отсортированные результаты из предложения OUTPUT (т.е. без использования временной таблицы или табличной переменной)?
Платформой БД является SQL Server 2005.
Вот оригинальный запрос; Я хочу отсортировать по полю ReleaseDate.
Update dbo.WFItem
Set ApprovedDate = getdate()
Output inserted.WFItemID, inserted.Title, inserted.Teaser
Where ApprovedDate is null
Таблица, с которой он работает, выглядит примерно так:
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]