首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中限制同一值仅显示2行

如何在MySQL中限制同一值仅显示2行
EN

Stack Overflow用户
提问于 2019-05-13 19:25:27
回答 3查看 336关注 0票数 0

如何显示所有数据,但限制相同的名称值仅显示2行例如,这是我的表'test':

代码语言:javascript
复制
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行来显示它是否是相同的name值,如下所示:

代码语言:javascript
复制
id  name
4   title-1
7   title-1
6   title-2
8   title-2
5   title-3
EN

回答 3

Stack Overflow用户

发布于 2019-05-13 19:27:05

您可以在MySQL 8+中使用row_number()

代码语言:javascript
复制
select id, name
from (select t.*,
             row_number() over (partition by name order by id desc) as seqnum
      from t
     ) t
where sequm <= 2;

在早期版本中,您可以使用相关子查询:

代码语言:javascript
复制
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<>fiddle,它表明这会产生预期的结果。

票数 0
EN

Stack Overflow用户

发布于 2019-05-13 19:55:40

尝尝这个。一定要管用。

代码语言:javascript
复制
SELECT name FROM test group by test having count(*) <= 2
票数 0
EN

Stack Overflow用户

发布于 2019-05-14 11:22:52

尝尝这个。

代码语言:javascript
复制
SELECT name from (
SELECT name, row_number() over (partition by name) as RN from TEST group by test having count(Name) >= 1 ) a where RN <= 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56111348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档