我想限制使用带有ORDER BY子句的语句时返回的行数。
我的一个列的ID不是该行唯一的ID,因此会出现多次。如果我在语句的末尾使用LIMIT,它将完全限制结果,而不是在SELECT点。 LIMIT可能是3,在这种情况下,每个ID将返回三行。
id | .........
1 | .........
1 | ........
1 | .......
1 | ......
1 | .....
2 | ....
2 | ...
2 | ..
2 | .
我的陈述结尾了:
ORDER BY id, date DESC
答案 0 :(得分:1)
这是一种方法:
select t.*
from table t
where (select count(*)
from table t2
where t2.id = t.id and t2.date >= t.date
) <= 3
order by id, date desc;
这会计算id的日期数等于或大于行中的日期,并且只保留计数小于或等于3的行。