[英]Rewriting MySQL subquery to be a join
这有一段评论的时间。
首先,我认为您在子查询中缺少ORDER BY
。 我怀疑您想order by I2.date
以获取“下一个”行。
其次,MySQL并未完全提供您需要的功能。 您可以使用变量重写查询。 但是,由于您没有描述它在做什么,因此很难确保重写是正确的。 这是加快查询速度的一种方法。
第三,此查询使用items(location, sku, date)
的索引会更快,并且可能足够快。 该索引可能就是您所需要的。
SELECT I1.*, MIN(I2.exit_date)
FROM Items I1
LEFT JOIN (
SELECT date as exit_date, location, sku
FROM Items
ORDER BY date asc
) as I2
ON I2.exit_date > I1.date
AND I2.location = I1.location
AND I2.sku = I1.sku
GROUP BY I1.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.