Sql 如何基于多个子查询的结果集更新表的多条记录

Sql 如何基于多个子查询的结果集更新表的多条记录,sql,postgresql,Sql,Postgresql,我必须更新表Contract的10行和3个字段 每10行必须使用不同的值进行更新 update contract_equipment_purchase set date_shipped = ( select lat.tstamp from lease_asset la join CR983_TMP tmp on la.serial_num=tmp.serial join (select lease_asset_id ,max(tstamp) as ts

我必须更新表Contract的10行和3个字段

每10行必须使用不同的值进行更新

   update  contract_equipment_purchase   set date_shipped = (
    select lat.tstamp from lease_asset la join CR983_TMP  tmp on la.serial_num=tmp.serial  join 
         (select lease_asset_id ,max(tstamp) as tstamp from lease_asset_transaction where status='Placed' group by lease_asset_id)
             lat on la.id=lat.lease_asset_id join lease_asset_status las on las.id=la.id and las.status<>'Out of Service' ),
lease_asset_id= (
        select la.id from lease_asset la join CR983_TMP  tmp on la.serial_num=tmp.serial  join 
             lease_asset_status las on las.id=la.id and las.status<>'Out of Service' ),
comprehensive_expiration_date='2013-10-31'
     where id_contract in (
        select cep.id_contract from contract_equipment_purchase cep join contract c on cep.id_contract =c.id_contract and c.id_contract_type=10 
            join facilities f on f.id=c.id_facility
            join CR983_TMP crtmp on crtmp.account=f.accounting_id);
我面临的主要问题是所有子查询都会给出多个结果,因为我必须用不同的值更新多行。
我怎样才能做到这一点呢?

这种语法应该能提供您想要的东西

update contract
set contract.account = s.account,
shipitem = i.item,
date='2013-3-25'
from contract c
  inner join shippertable s on c.account = s.account
  inner join itemtable i on c.item = i.item
where contractname = (select name from customers where)

请在子查询中发布您想要的WHERE子句SQL更新为WHERE!如果不是c.account=s.account上的内部join shippertable s,而是c.account上的内部join shippertable s=从客户中选择s.account,其中。。这个子查询返回多条记录,它会工作吗?还是我要用?