您可以使用此解决方案:
SELECT b.update_time, a.item_id
FROM item_update a
INNER JOIN updte b ON a.update_id = b.id
LEFT JOIN item_update c ON a.update_id = c.update_id
AND a.item_id <= c.item_id
GROUP BY a.update_id, a.item_id
HAVING COUNT(1) <= 2
2
子句中的HAVING
是每组要限制的项目数(通过每组最高的nitem_id
来限制)。您可以使用演示摆弄此解决方案:
请注意,如果您将 更改2
为 a 3
,您将在 3 月 6 日获得更多结果。
如果您希望结果分层显示,您可以这样做:
SELECT a.val
FROM
(
SELECT CONCAT('- - - -> ', a.item_id) AS val,
CONCAT(b.update_time, a.item_id) AS orderfactor
FROM item_update a
INNER JOIN updte b ON a.update_id = b.id
LEFT JOIN item_update c ON a.update_id = c.update_id AND a.item_id <= c.item_id
GROUP BY a.update_id, a.item_id
HAVING COUNT(1) <= 2
UNION ALL
SELECT DATE_FORMAT(update_time, 'On %M %e, %Y:'),
update_time
FROM updte
) a
ORDER BY a.orderfactor