Как обновить столбец для всех строк в таблице с различными значениями для каждой строки в таблице из 100 записей - PullRequest
4 голосов
/ 01 июля 2011

моя таблица содержит 100 записей, и мне нужно обновить столбец с новыми значениями (значения diff для каждой записи) для каждой из 100 записей. Как я могу это сделать.столбец для обновления значений не является первичным ключом.

Ответы [ 5 ]

7 голосов
/ 01 июля 2011
UPDATE tablename
   SET columnname = CASE id
                        WHEN 1 THEN 42
                        WHEN 2 THEN 666
                    END

В этом запросе columnname будет обновлено до 42 для строки с id = 1 и 666 для id = 2

1 голос
/ 01 июля 2011

Создайте таблицу с идентификатором автокремента и столбцами исходной таблицы.

Затем

INSERT INTO new_table (column1, column2,.....) -- refer all columns except autoincrement id
SELECT * FROM old_table

Обновите старую таблицу, соединив ее с новой, предполагая, что это составной ключили нет, что отличает каждый ряд

0 голосов
/ 15 февраля 2017

загрузить DataTable, скажем, dt с определенным идентификатором строки таблицы, которую вы хотите обновить.затем выполните

foreach(DataRow rw in dt.Rows)
{
    update table_name set column_name=desired_value where specific_column=rw
}
0 голосов
/ 01 июля 2011

Если вы используете SQL Server 2005 или новее (вы точно не указали .....), вы можете легко использовать CTE (Common Table Expression) для этого - в основном вы выберите значение PK и счетчик, считающий от 1, и установите для столбца ColumnName каждой строки значение счетчика:

;WITH UpdateData AS 
(
   SELECT 
      PKValue,
      ROW_NUMBER() OVER(ORDER BY .......) AS 'RowNum'
   FROM
      dbo.YourTable
)
UPDATE dbo.YourTable
SET ColumnName = u.RowNum
FROM UpdateData u
WHERE dbo.YourTable.PKValue = u.PKValue

При этом вы генерируете последовательность от 1 до 100 в поле RowNum CTE и устанавливаете это уникальное значение для вашей базовой таблицы.

0 голосов
/ 01 июля 2011

Установить ограничение Уникальность для этого столбца.

ALTER TABLE YourTableName
ADD CONSTRAINT uc_ColumnID UNIQUE (ColumnName)

Теперь, когда вы пытаетесь обновить его с дублирующимися значениями, сервер sql не разрешает:)

Также долгосрочный сценарий

...