У меня есть следующие таблицы:Обновление next_id колонки
VehicleID Reg_ID Next_RegID EntryDate
330034 9111 NULL 2010-12-06 00:00:00
330034 9113 NULL 2010-12-09 00:00:00
На первой строке мне нужно обновить столбец Next_RegId с Reg_ID второго ряда, где VehicleId или (VIN/ChassisNumber) одно и то же. Столбец Next_RegID в последней записи должен оставаться Null.
Я создал процедуру цикла while, которая работает отлично, но с миллионами записей в таблице требуется полный возраст. Поэтому мне было интересно, есть ли у кого-нибудь из вас проблемы такого типа и есть решение для этого.
Вот процедура я написал, и заранее спасибо за вашу помощь:
Declare @i as integer;
Declare @x as integer;
Declare @y as integer
Set @i= (Select Max(RID) from TempRegistration)
Set @x= 0
Set @y= 1
Declare @curChassis as nvarchar(100)
Declare @nextChassis as nvarchar(100)
While (@x <= @i)
Begin
set @curChassis = (Select ChassisNumber from TempRegistration where RID = @x)
set @nextChassis = (Select ChassisNumber from TempRegistration where RID = @y)
If (@curChassis = @nextChassis)
Begin
Update Registration set NextRegistrationId = (Select RegistrationId from TempRegistration where RID = @y)
Where RegistrationId = (Select RegistrationId from TempRegistration where RID = @x)
End
Set @x = @x + 1
Set @y = @y + 1
Print(@x)
End
TempRegistration это временная таблица, я создал для назначения ROW_ID, который направляет время цикла, чтобы назначить Reg_ID к Next_RegId в предыдущей строке.
*** SQL *** - это только * Структурированный язык запросов * - язык, используемый многими системами баз данных, но не продукт базы данных ... многие вещи специфичны для поставщиков, поэтому нам действительно нужно знать, что ** система баз данных ** (и какая версия) вы используете (пожалуйста, обновите теги соответственно) .... –