SQL возвращает те же данные или повторяет - PullRequest
0 голосов
/ 24 сентября 2019

Обновление столбца из другой таблицы и мои попытки поставить в очередь те же данные, которые уже есть в Speedlink_ID Я пытаюсь обновить CON_SP_ID из CON_SP_ID Таблица 1 CON_SP_ID все строки не заполнены или имеют значение NULL. Таблица 2 * Speedlink_ID * содержит данные

В обоих столбцах одинаковое количество строк.

ATTEMPT 1 - не возвращает обновленных данных.

UPDATE t1
SET    CON_SP_ID = t2.Speedlink_ID
FROM   dbo.Data1 AS t1
      INNER JOIN  dbo.Data2 AS t2
      ON t1.CON_SP_ID = t2.[Speedlink_ID]

SELECT TOP (1000) [CON_SP_ID]
FROM Data1

ATTEMPT 2

UPDATE t -- alias of table you are updating
SET    CON_SP_ID = d.Speedlink_ID
FROM   Data1 t
       join Data2 d on d.Speedlink_ID = t.CON_SP_ID


SELECT TOP (1000) [CON_SP_ID]
FROM [Data1]

ATTEMPT 3

UPDATE [Data1]
SET    [Data1].CON_SP_ID = (

            SELECT CON_SP_ID

            FROM         [DATA2]

            WHERE   [Data1].CON_SP_ID = [DATA2].CON_SP_ID)


SELECT TOP (1000) [CON_SP_ID]
FROM [Data1]

ATTEMPT 4 - повторяется первымРяд [DATA2]. [Speedlink_ID] до конца таблицы

UPDATE [Data1]
SET    [Data1].CON_SP_ID =  [DATA2].[Speedlink_ID]

            FROM         [DATA2]        

    SELECT TOP (1000) [CON_SP_ID]
FROM [Data1]

Показывает повторы

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Спасибо @ avery_larry

Я понял, что вам нужен столбец, который одинаков для обеих таблиц.Подсеть находится в том же порядке сортировки / введена так же, как моя вторая таблица.Мне нужно было сопоставить строку за строкой, используя подсеть и мой KEY, потому что это уникальный номер.

Все еще учусь, спасибо каждому

UPDATE [Data1]
SET   [Data1].[CON_SP_ID] = [Data2].[Con_SP_ID]

FROM
            dbo.Data1 as Data1
INNER JOIN
            dbo.Data2 AS Data2  

ON 
           Data1.Subnet = Data2.Subnet

SELECT TOP (1000) [CON_SP_ID]
FROM [Data1]
0 голосов
/ 25 сентября 2019

Ваши сценарии обновляют столбец CON_SP_ID.Это не то, что я думаю, вы хотите - поправьте меня, если я ошибаюсь.Вместо этого я ожидаю, что вы захотите обновить другие столбцы в таблице.Вы не указали никаких других имен столбцов, поэтому я использовал общие столбцы в моем примере кода: не проверено

UPDATE t1
SET    column_A = t2.column_A, column_B = t2.column_B, column_C = t2.column_C
FROM   dbo.Data1 AS t1
INNER JOIN  dbo.Data2 AS t2 ON t1.CON_SP_ID = t2.Speedlink_ID
...