2012-06-20 4 views
4

Как я могу установить значение столбца, которое было добавлено после изменения таблицы, равной строке нет в sql server 2008. То есть я хочу, чтобы значение столбца равнялось no. строки. Я также хочу, чтобы это поле допускало значения NULL. Таким образом, это похоже на автоматическое увеличение, но с учетом нулевых значений, поэтому не нужно использовать столбец идентификации или первичного ключа с автоматическим приращением. Итак, как его можно установить в строку нет? Любая помощь будет оценена.Как установить значение столбца, равное строке нет?

+0

автоинкремент не будет устанавливать значение для номера строки: если вы вставляете пятьдесят элементов, а затем удаляете их, вставка следующего элемента будет иметь значение 50, даже если это единственная строка в таблице, а номер строки должен Будь один. – dasblinkenlight

+0

да, это правда. Итак, как я могу установить значение столбца для номера строки? – user13

ответ

10

Если вы пытаетесь обновить колонку непосредственно с помощью ROW_NUMBER() вы получите ...

Windowed функции могут появляться только в SELECT, или ORDER BY положений.

... так что вместо INNER JOIN таблицы к себе ...

UPDATE 
    [test123] 
SET 
    [row_number] = [x].[rn] 
FROM 
    [test123] 
INNER JOIN 
    (
     SELECT 
      [test_id], 
      ROW_NUMBER() OVER (ORDER BY [test_id]) AS rn 
     FROM 
      [test123] 
    ) AS x 
ON 
    [test123].[test_id] = [x].[test_id] 
1

, что об этом: Он будет обновлять значение нужного столбца на номер строки.

select 'Update myTable set row_No = ' + 
CAST(ROW_NUMBER() over (order by ID) as varchar) + ' Where ID = ' + 
cast(ID as varchar) from myTable 

--The результат будет производить оператор обновления, который при запуске будет обновлять значение нужного столбца на номер строки.

Смежные вопросы