2013-04-03 42 views
0

我要更新10行和表「合同」如何更新基於結果集的子查詢很多

每10行的3場都以不同的值來更新表的多個記錄。

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); 

我面臨的主要問題是所有子查詢給出多個結果,因爲我必須更新具有不同值的多個行。 我該怎麼做?

+0

請發表您的意'WHERE'在子查詢 – Quassnoi 2013-04-03 18:42:02

+0

SQL與在更新條款! – zod 2013-04-03 18:46:36

回答

1

這句法應該給你你在找什麼

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) 
+0

如果不是「c.account = s.account上的內部連接shippertable s」,而是「c.account =(從客戶選擇s.account中的內部連接shippertable s)」,並且此子查詢返回多條記錄,將這行得通 ?或者我必須使用WITH? – zod 2013-04-03 19:16:46