获取第一个或最后一个结果作为联接的一部分

时间:2011-06-06 23:12:59

标签: mysql sql

目前我想从相关表中选择最新值。所以,我有一个销售表,可以有许多与单一销售相关的交易。我目前可以使用子查询来获取最近的销售,如下所示,但它非常慢!

UPDATE Sales s
SET LastTrans = (SELECT Stamp 
                   FROM Transactions 
                  WHERE SalesID = s.ID 
               ORDER BY Desc LIMIT 1)
WHERE LastTrans IS NULL;

有没有办法使用连接做这样的事情,好像我为成千上万的记录做这样的事情可能需要很长时间!

1 个答案:

答案 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;