我有两张桌子。第一个商店orders
:
id | date | status
第二个表存储revisions
(对订单的更改):
name | date | product | producer | etc...
我正在使用此查询显示订单:
SELECT id, date from orders
然后我只使用此查询显示每个订单的最后修订版本:
SELECT name, product, producer from revisions WHERE order_id = id ORDER BY date LIMIT 1
两个问题:
SELECT
?name
表中的revisions
过滤所有订单?答案 0 :(得分:0)
SELECT o.id, o.date,
r.name, r.product, r.producer
FROM orders o JOIN (revisions r NATURAL JOIN (
SELECT order_id, name, MAX(date) date
FROM revisions
WHERE name = ?
GROUP BY order_id
) t) ON r.order_id = o.id
请注意,如果单个订单的多个修订版具有revisions.date
的相同值,那么它们将全部返回到结果中(而您之前使用LIMIT 1
的方法将返回一个不确定的版本) 。如果您想要更具选择性,则需要确定选择要选择哪个结果的标准。