Sql server 来自选择的更新抱怨返回了多个值

Sql server 来自选择的更新抱怨返回了多个值,sql-server,sql-server-2005,tsql,Sql Server,Sql Server 2005,Tsql,我有这样的数据结构: 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 J

我有这样的数据结构:

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
);
但我得到了一个错误:

子查询返回了多个值。 这是不允许的,因为 子查询后面是=,!== 或者当子查询用作 表情


是因为语法错误吗?数据模型允许每个地块有多个建筑,但实际数据不包含此类情况,因此每个地块代码最多应有一个建筑id。

在查询中使用top 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 ); 也许你是说

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