SQL UPDATE Путаница со связанными таблицами (подзапрос вернул более 1 значения) - PullRequest
1 голос
/ 08 июня 2011

База данных имеет таблицу A, а таблица BAID связана с B.ID.

Мне нужно обновить все экземпляры A.Name, чтобы они были равны B.Catalog, если и только если эти экземплярысвязаны A.ID = B.ID.

Только записи в A, где A.Owner = 0, должны быть обновлены.

Код, который я придумал:

UPDATE A
SET A.Name = (SELECT B.Catalog
    FROM B, A
    WHERE (B.ID = A.ID) AND (A.Owner = 0))
WHERE A.ID IN (SELECT B.ID
    FROM B, A
    WHERE (B.ID = A.ID) AND (A.Owner = 0))

Ошибка "Subquery returned more than one value" (MS SQL 2005 добавляет "MSG 512, LEVEL 16, STATE 1, LINE 1").Я понимаю, что говорит мне ошибка, что я пытаюсь установить одно значение равным нескольким результатам, возвращаемым оператором SELECT, но я думаю, что мои знания SQL слишком недостаточны, чтобы придумать правильный код.

Любая помощь будет принята с благодарностью.Это то, что я получаю за попытку научить себя!Головная боль!

Ответы [ 2 ]

4 голосов
/ 08 июня 2011
update A
set A.Name = B.Catalog
from TableA A
    join TableB B on
        A.Id = B.Id
where A.Owner = 0
3 голосов
/ 08 июня 2011
UPDATE A
SET A.Name = B.Catalog
FROM A INNER JOIN B ON A.ID = B.ID
WHERE A.Owner = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...