SQL更新列,具有来自不同表的正确ID

时间:2014-02-04 10:48:42

标签: sql sql-server-2008 sql-update sql-scripts

好的开始 - 我已经搞砸了!

我有两张桌子记录了所有的拍卖 - Bought&已售出 - 并且每个已售出的记录都具有bidID值,该值将其加入到Bought记录中。已购买的每件商品都有一个独特的itemID值,但有时可能会多次买卖同一商品。

以下列记录为例......

Sold Table:

listingID   itemID           bidID     gamertag           startPrice    binPrice    currentPrice    listingEnds               listingBought
----------- ---------------- --------- ------------------ ------------- ----------- --------------- ------------------------- -----------------------
18661       9011938655       4410      BoundenLeech84     3000          3100        3100            2014-01-31 18:59:20.000   2014-01-31 18:09:32.000
18825       9011938655       4410      BoundenLeech84     2800          2900        2900            2014-01-31 19:53:15.000   2014-01-31 18:54:48.000

Bought Table:

bidID       itemID           gamertag          binPrice   lowestBIN   bidTime
----------- ---------------- ----------------- ---------- ----------- -----------------------
4410        9011938655       BoundenLeech84    2800       3300        2014-01-31 17:59:18
4454        9011938655       BoundenLeech84    2600       3100        2014-01-31 18:53:14

因此,列表ID 18661的bidID 4410是正确的,但是listingID 18825的bidID也是4410,这是不正确的,因为它应该是4454(因为bidID 4454的bidTime是在listingID 18661的listingBought时间之后)。

有数百个,如果不是数千个这样的记录,所以我想知道是否有人知道是否有一种编写脚本的方法可以省去我的手动操作吗?

1 个答案:

答案 0 :(得分:1)

UPDATE A SET A.BIDID=B.BIDID
FROM SOLD A JOIN(SELECT BIDID,ITEMID,BIDTIME FROM BOUGHT)B
ON A.ITEMID=B.ITEMID
AND A.LISTINGBOUGHT>B.BIDTIME
AND A.BIDID<>B.BIDID
WHERE A.LISTINGBOUGHT>B.BIDTIME