目前我想从相关表中选择最新值。所以,我有一个销售表,可以有许多与单一销售相关的交易。我目前可以使用子查询来获取最近的销售,如下所示,但它非常慢!
UPDATE Sales s
SET LastTrans = (SELECT Stamp
FROM Transactions
WHERE SalesID = s.ID
ORDER BY Desc LIMIT 1)
WHERE LastTrans IS NULL;
有没有办法使用连接做这样的事情,好像我为成千上万的记录做这样的事情可能需要很长时间!
答案 0 :(得分:1)
你没有说出你的内部查询被排序的列,所以我认为它是Stamp。
UPDATE Sales s INNER JOIN (
SELECT SalesID, MAX(Stamp) AS MaxStamp FROM Transactions
GROUP BY SalesID
) AS t ON s.ID = t.SalesID
SET LastTrans = t.MaxStamp
WHERE LastTrans IS NULL;