这不是同一个问题:在 GROUP BY 中使用 LIMIT 来获得每组 N 个结果?
但我承认它是相似的。
我需要选择每人的前 2 行。这些行按收到的年份排序
问题:有可能在同一个月输入了超过 2 个数据(输入的日期为 YYYY-MM)
我带来的查询(在提到的问题之后)卡在一个大循环中。
SELECT *
FROM `table_data` as b
WHERE (
SELECT count(*) FROM `table_data` as a
WHERE a.Nom = b.Nom and a.year < b.year
) <= 2;
样本数据 :
A | year | Nom
---------------------
b | 2011-01 | Tim
---------------------
d | 2011-01 | Tim
---------------------
s | 2011-01 | Tim
---------------------
a | 2011-03 | Luc
---------------------
g | 2011-01 | Luc
---------------------
s | 2011-01 | Luc
应该出口:
A | year | Nom
---------------------
b | 2011-01 | Tim
---------------------
d | 2011-01 | Tim
---------------------
a | 2011-03 | Luc
---------------------
g | 2011-01 | Luc