我有以下两张桌子:
- 成分(ID,名称)
- 成分_价格(id,成分_id,价格,created_at)
这样一种成分可以有很多价格。获得每种成分最新输入价格的最佳方式是什么?我知道它可以通过子选择轻松完成,但我想知道是否有更有效的方法来做到这一点。
我有以下两张桌子:
这样一种成分可以有很多价格。获得每种成分最新输入价格的最佳方式是什么?我知道它可以通过子选择轻松完成,但我想知道是否有更有效的方法来做到这一点。
我这样做:
SELECT i.*, p1.*
FROM ingredients i
JOIN ingredient_prices p1 ON (i.id = p1.ingredient_id)
LEFT OUTER JOIN ingredient_prices p2 ON (i.id = p2.ingredient_id
AND p1.created_at < p2.created_at)
WHERE p2.id IS NULL;
这将搜索比 p1 更新的价格 (p2),如果没有找到,则 p1 必须是最近的价格。
如果在给定日期可能有多个价格,那么您需要另一个术语来过滤掉重复项。