Как добавить столбец уникального идентификатора и вставить значения - PullRequest
18 голосов
/ 12 ноября 2009

Может ли любое тело, пожалуйста, дайте мне несколько идей здесь. У меня огромная таблица с 189999 строками. Мне нужно выбрать только средние значения этого. Как мне это сделать. Я добавил уникальный идентификатор столбца. Как мне вставить значения в него. Пожалуйста, предложите. Я был бы очень признателен за вашу помощь. Я принял ответы нет. Я не знал, как это сделать раньше. Спасибо всем

Ответы [ 2 ]

36 голосов
/ 13 ноября 2009

Это должно работать просто отлично.

UPDATE table
SET UniqueIdentifierColumn = NEWID()
WHERE ...

Обратите внимание, что при выполнении обновления в одном выражении на основе набора каждая строка заполняется различным GUID.

Пример кода

CREATE TABLE dbo.HugeTable (
    ColID       int     IDENTITY    PRIMARY KEY,
    ColGUID     uniqueidentifier,
    ColInt      int
)

DECLARE @ct     int

SET @ct = 0
WHILE @ct < 10 BEGIN
    SET @ct = @ct + 1
    INSERT INTO dbo.HugeTable (ColInt) VALUES (@ct)
END
GO

SELECT COUNT(*) AS Ct FROM dbo.HugeTable

UPDATE dbo.HugeTable
SET ColGUID = NEWID()
WHERE ColID BETWEEN 3 AND 7

SELECT * FROM dbo.HugeTable

Результаты

         Ct
-----------
         10

      ColID ColGUID                                   ColInt
----------- ------------------------------------ -----------
          1 NULL                                           1
          2 NULL                                           2
          3 E45E13D8-CFF0-4FC7-B7C9-1D53E95C502D           3
          4 33C3CCBC-B6BB-4CAA-AB10-338AA95F366E           4
          5 82136767-396E-4B33-B9DD-FFD30FCF4680           5
          6 EFA24EC9-F8F9-47CF-839F-D588F69D167F           6
          7 546F7C14-BDDA-4226-B45C-B0DDCD43E7DB           7
          8 NULL                                           8
          9 NULL                                           9
         10 NULL                                          10
18 голосов
/ 13 ноября 2009

Чтобы добавить столбец типа UNIQUEIDENTIFIER с ограничением по умолчанию и немедленным заполнением значений, используйте что-то вроде:

ALTER TABLE dbo.Accounts
  ADD NewColumn UNIQUEIDENTIFIER
  CONSTRAINT DF_T_Account_NewColumn DEFAULT (newsequentialid()) WITH VALUES

Если у вас уже есть столбец в таблице и вам просто нужно вставить значения, используйте:

UPDATE dbo.Accounts
SET NewColumn = newid()
WHERE NewColumn IS NULL

Но я не имею ни малейшего понятия, что вы подразумеваете под "выбором только средних значений" - уточните, пожалуйста.

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...