由GROUPED字段限制而不是返回所有行

时间:2013-11-28 13:48:37

标签: mysql sql group-by

我正在使用此(简化):

SELECT
o.order,
GROUP_CONCAT(oi.article)
FROM orders o
JOIN order_items oi
ON o.order = oi.order
GROUP BY o.order
LIMIT 50

获取所有订单商品的最后50个订单。

但是我需要订单项在他们自己的行中(veritcally返回)而不是GROUP_CONCAT水平返回。

如何在每行中使用单个订单商品退回最近50个订单的所有订单商品?

2 个答案:

答案 0 :(得分:1)

使用子查询选择最后50个订单,然后将其与项目连接。

select o.order, oi.article
from (SELECT order
      FROM orders
      ORDER BY order_date DESC
      LIMIT 50) o
JOIN order_items oi
ON o.order = oi.order

答案 1 :(得分:1)

你谈到了最后50个项目,但你没有提到ORDER BY的date_field。在订单表中有了date_field,你可以这样做:

SELECT o.order, oi.article
FROM (SELECT order
      FROM orders
      ORDER BY date_field DESC
      LIMIT 50 ) o
INNER JOIN order_items oi ON o.order = oi.order