UPDATE от SELECT жалуется на более чем одно возвращенное значение - PullRequest
0 голосов
/ 13 мая 2010

У меня есть такая структура данных:

request
=======
building_id
lot_code

building
========
building_id
lot_id

lot
===
lot_id
lot_code

В таблице request отсутствует значение для столбца building_id, и я хочу заполнить его из других таблиц. Итак, я попробовал это:

UPDATE request
SET building_id = (
    SELECT bu.building_id
    FROM building bu
    INNER JOIN lot lo ON bu.lot_id=lo.lot_id
    WHERE lo.lot_code = request.lot_code
);

Но я получаю эту ошибку:

Подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует =,! =, <, <=,>,> = или когда подзапрос используется как выражение.

Это из-за неправильного синтаксиса? Модель данных допускает более одного здания на участок, но фактические данные не содержат таких случаев, поэтому должно быть не более одного building_id на lot_code.

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

вероятно, вы имеете в виду

UPDATE request
SET building_id = bu.building_id
FROM building bu
    INNER JOIN lot lo ON bu.lot_id=lo.lot_id
WHERE lo.lot_code = request.lot_code
0 голосов
/ 13 мая 2010

используйте топ 1 в своем запросе, как в примере ниже.

UPDATE request
SET building_id = (
    SELECT top 1 bu.building_id
    FROM building bu
    INNER JOIN lot lo ON bu.lot_id=lo.lot_id
    WHERE lo.lot_code = request.lot_code
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...