Я вставляю данные в две таблицы.В каждой вставке есть ВЫХОД к таблице #temp, каждая со столбцом идентификаторов.Выбор, генерирующий данные для вставки, имеет одинаковый порядок для каждой вставки.Позже я соединяю две таблицы #temp по столбцу Identity.Я ожидал бы, что номера столбцов идентификаторов будут выстроены в порядке, указанном с обеих сторон при вставке.Время от времени кажется, что эти числа не совпадают, и единственное, о чем я могу думать, это то, что, возможно, OUTPUT не всегда соблюдает порядок в выражениях select при записи данных OUTPUT во временные таблицы.
CREATE TABLE #TempTable
(
RowNumber Integer IDENTITY (1,1) NOT NULL,
TableID Integer
CONSTRAINT PK_TableID PRIMARY KEY NONCLUSTERED (RowNumber)
)
INSERT INTO Table
(column1,column2,column3,etc)
OUTPUT
INSERTED.ID
INTO #TempTable
(ID)
SELECT
column1,column2,column3,etc
FROM
Other table
ORDER BY
SourceFlag,
StoreID,
storenumber,
EstablishDate,
TableID
Я ожидал бы, что операторы будут вставлять, например, 25 строк в оба оператора в одном и том же порядке от 1 до 25. Тогда я смогу объединиться на основе номера строки 1 = 1,25 = 25 и т. Д., Чтобы получить соответствующие данные.То, что я думаю, происходит из-за того, что порядок нарушается, так что строка # 1 из первой вставки действительно совпадает, скажем, со строкой № 14 со второй, поэтому, когда я позже присоединяюсь 1 к 1, я получаю несоответствующие данные.