Обновите все значения столбца в таблице значением столбца другой таблицы (связанным внешним ключом) - PullRequest
2 голосов
/ 28 июля 2010

Я пытаюсь заполнить новый столбец в таблице данными, находящимися в столбце другой таблицы.

    UPDATE  dbo.PackageSessionNodes
    SET     Created_By = 
               (select userid from dbo.PackageSessions, dbo.PackageSessionNodes 
                where  dbo.PackageSessions.PackageSessionId 
                        = dbo.PackageSessionNodes.PackageSessionId)

Обновление не выполнено, поскольку подзапрос повторяет более одного значения.Я, очевидно, sql noob, поэтому любая помощь будет оценена.

Thx!

Ответы [ 2 ]

4 голосов
/ 28 июля 2010

Я думаю, что вы ищете этот синтаксис:

update dbo.PackageSessionNodes set Created_By = p.userid
from dbo.PackageSessionNodes pn
left join dbo.PackageSessions p on p.PackageSessionId = pn.PackageSessionId

Я предполагаю, что PackageSessionNode может иметь только один PackageSession?

0 голосов
/ 28 июля 2010

Ваш исходный запрос выполняет декартово соединение, которое может объяснить несколько результатов

Заменить

dbo.PackageSessions , dbo.PackageSessionNodes 

с

  dbo.PackageSessions

и добавьте DISTINCT

UPDATE  dbo.PackageSessionNodes
SET     Created_By = 
           (select DISTINCT userid from dbo.PackageSessions 
          where  dbo.PackageSessions.PackageSessionId = 
             dbo.PackageSessionNodes.PackageSessionId)

Это все равно не удастся, если у вас есть несколько различных результатов, возвращаемых, и в этом случае вам нужно определить, какой из них вы хотите использовать.

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