Mysql 作为联接的一部分获取第一个或最后一个结果
目前,我想从相关表中选择最近的值。因此,我有一个销售表,它可以包含与单个销售相关的许多交易。我目前可以使用子查询获取最新的销售,如下所示,但速度非常慢Mysql 作为联接的一部分获取第一个或最后一个结果,mysql,sql,Mysql,Sql,目前,我想从相关表中选择最近的值。因此,我有一个销售表,它可以包含与单个销售相关的许多交易。我目前可以使用子查询获取最新的销售,如下所示,但速度非常慢 UPDATE Sales s SET LastTrans = (SELECT Stamp FROM Transactions WHERE SalesID = s.ID ORDER BY Desc LIMIT 1) WHERE LastTr
UPDATE Sales s
SET LastTrans = (SELECT Stamp
FROM Transactions
WHERE SalesID = s.ID
ORDER BY Desc LIMIT 1)
WHERE LastTrans IS NULL;
有没有一种方法可以使用连接来做类似的事情,就像我对数千条记录进行连接一样,这可能需要很多时间 您没有说明内部查询按哪列排序,所以我假设它是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;
如果您可以在sql上添加运行
EXPLAIN
的输出,这将非常有用。您还可以发布表架构吗?是否创建了正确的索引?