我有两张桌子:
股票数据
Batch Stock Rate
------------------------
123---ABC---123
251---XYZ---50
250---XYZ---55
247---XYZ---48
118---ABC---120
310---PQR---77
309---PQR---76
和第二张表 订单簿
Date-------Stock---qty--Rate
--------------------------
2016-01-01---ABC---10---Null
2016-01-02---XYZ---25---Null
2016-01-03---PQR---18---Null
2016-01-04---XYZ---50---Null
我无法在Stock Data中的订单簿表中插入汇率,其中库存数据中的汇率应该是每种产品的最新批次。提前致谢
答案 0 :(得分:1)
请尝试以下查询:
UPDATE OrderBook OB
INNER JOIN (
SELECT
SD.Stock,
SD.Rate
FROM StockData SD
INNER JOIN (
SELECT
Stock,
MAX(Batch) max_batch
FROM StockData
GROUP BY Stock
) AS t
ON SD.Stock = t.Stock AND SD.Batch = t.max_batch
) AS maxBatchRateTable
ON OB.Stock = maxBatchRateTable.Stock
SET OB.Rate = maxBatchRateTable.Rate;
<强>解释强>
此查询
SELECT
SD.Stock,
SD.Rate
FROM StockData SD
INNER JOIN (
SELECT
Stock,
MAX(Batch) max_batch
FROM StockData
GROUP BY Stock
) AS t
ON SD.Stock = t.Stock AND SD.Batch = t.max_batch
查找每种股票的最新批次的费率。
稍后,如果您在此表与匹配INNER JOIN
的{{1}}表之间设置了OrderBook
,并通过{{更新Stock
表中的Rate
1}}上面的查询返回的值,你会得到你想要的。
答案 1 :(得分:0)
UPDATE
order_book
INNER JOIN
(
SELECT
Rate,
Stock
FROM
stock_data
INNER JOIN
(
SELECT
MAX(Batch) AS batch,
stock
FROM
stock_data
GROUP BY
Stock
) AS latestBatch
ON stock_data.Batch = latestBatch.batch
AND stock_data.stock = latestBatch.stock
) AS updateData
ON updateData.Stock = order_book.Stock
SET
order_book.Rate = updateData.Rate
应沿着这些方向
答案 2 :(得分:0)
尝试此查询: -
UPDATE order_book ob, (
SELECT rate, stock
FROM stock_data sd
GROUP BY stock
HAVING MAX(batch)
ORDER BY batch DESC
) result
SET ob.rate = result.rate
WHERE ob.stock = result.stock