例如,如何显示所有数据但限制同名值仅显示两行,这是我的表“ test”:
id name
1 title-1
2 title-1
3 title-2
4 title-1
5 title-3
6 title-2
7 title-1
8 title-2
并且我希望输出获取所有数据,但仅限制2行以显示其是否具有相同的名称值,例如:
id name
4 title-1
7 title-1
6 title-2
8 title-2
5 title-3
答案 0 :(得分:0)
您可以在MySQL 8+中使用row_number()
:
select id, name
from (select t.*,
row_number() over (partition by name order by id desc) as seqnum
from t
) t
where sequm <= 2;
在早期版本中,您可以使用相关子查询:
select t.*
from t
where t.id >= coalesce( (select t2.id
from t t2
where t2.name = t.name
order by t2.id desc
limit 1, 1
), t.id);
Here是db <>小提琴,它表明产生了预期的结果。
答案 1 :(得分:0)
尝试一下。必须工作。
SELECT name FROM test group by test having count(*) <= 2
答案 2 :(得分:0)
尝试一下。
alert