Я использую Microsoft SQL Server 2005.
Я создаю генератор случайных записей, который случайным образом вставляет 10 записей во временную таблицу. Записи во временной таблице будут затем использоваться для обновления записей в таблице в памяти.
Вот утверждение, которое вызывает у меня некоторые проблемы (предположим, временная таблица уже создана).
insert into #tempTable
select top (10 - @totalOverShort)
d.depositid, d.location, d.amount, d.count, d.user_add,
d.date_add, d.status, d.comments, d.subtotal_difference, d.count_difference, d.user_checked,
d.date_updated, d.ip_checked, newID() as randomColumn
from
closing_balance..cb_depositbag as d
left join
#tempTable as t on d.depositid <> t.depositid and d.location <> t.location
where
d.date_add between @weekPrior and @weekPriorNight and
d.status = 'R' and d.depositID <> t.depositID
order by
randomColumn
Это утверждение дает мне случайно сгенерированные столбцы, но иногда (около 1/10) я получаю 1 или более дубликатов во временной таблице. Таблица в памяти имеет двухкомпонентный ключ, DepositID и Location. Я хочу сказать, что если там не выходит случайно выбранная пара (depositID, location), то вставьте эту запись во временную таблицу. Есть ли другой способ сделать это? Я думаю, что причина наличия дубликатов заключается в том, что он оценивает оператор select более чем в 10 раз, что может привести к дублированию из-за случайного упорядочения. Хотя я не уверен.
Заранее спасибо.