SQL 2008 - 使用另一个表的最新日期从另一个表更新表

时间:2013-11-15 08:39:52

标签: mysql sql sql-server

我有2个表,'Items'和'Itemldgr'。我想使用items.saleprice中的最新itemldgr.purchaseprice来更新itemldgr

这是一个简单的想法:

update items set items.saleprice = (itemldgr.purchaseprice * 1.30) from itemldgr,
items
where items.itemid = itemldgr.itemid
and itemldgr.docdate = (
select itemldgr.itemid,MAX(docdate)
from itemldgr 
where itemldgr.docid = 'RR'
and itemldgr.netcost <> '0'
and itemldgr.qtyin <> '0'
group by itemldgr.itemid
order by itemid)`

2 个答案:

答案 0 :(得分:1)

试试这个

   update items 
   INNER JOIN itemldgr on items.itemid = itemldgr.itemid 
   set items.saleprice = itemldgr.purchaseprice * 1.30 ,
   where itemldgr.docdate = (
                            select itemldgr.itemid,MAX(docdate)
                            from itemldgr 
                            where itemldgr.docid = 'RR'
                            and itemldgr.netcost <> '0'
                            and itemldgr.qtyin <> '0'
                            group by itemldgr.itemid
                            order by itemid)

答案 1 :(得分:1)

通过选择进行更新时,请尝试在以下上下文中执行此操作:

UPDATE a
Set a.Column1 = b.Column2
FROM Table a
INNER JOIN Table b ON a.ID = b.aID

这是一个简单的方法, 对于您的查询,它将变成类似:

update b 
  set b.saleprice = (a.purchaseprice * 1.30) 
from 
       itemldgr a
inner join items b ON a.itemid = b.itemid
WHERE a.docdate = 
(
  select MAX(docdate)
  from itemldgr c
  where c.docid = 'RR'
  and c.netcost <> '0'
  and c.qtyin <> '0'
  and c.itemid = a.itemid
)