mysql 分组取前几条
set @num := 0, @type := ”;
select *
from (
select id,type, data,
@num := if(@type=type, @num + 1, 1) as row_number,
@type := type as other_type
from test c
order by type, data desc
) a
group by type, data
having row_number <= 2
第二种
SELECT
id,
title,
channel,
create_time
FROM
test_news AS a
WHERE
(
SELECT
count(1)
FROM
test_news AS b
WHERE
a.channel = b.channel
AND a. STATUS = b. STATUS
AND a.id < b.id
) < 5
ORDER BY
a.channel ASC,
a.id DESC;