[英]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.