如何在MySQL中仅限制2行以显示相同的值

时间:2019-05-13 11:25:27

标签: mysql sql group-by distinct limit

例如,如何显示所有数据但限制同名值仅显示两行,这是我的表“ 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

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