首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL:从具有大量行的两个userid中选择所有行

SQL:从具有大量行的两个userid中选择所有行
EN

Stack Overflow用户
提问于 2013-09-20 04:23:20
回答 3查看 73关注 0票数 0

我希望从行数最多的两个用户获取所有行,即日志表中活动最多的两个用户。

我只找到了下一个解决方案:首先,获取每个用户的行数,并将其限制为2:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT userid, count(*) AS n_of_rows FROM my_table GROUP BY userid LIMIT 2;

然后,从我查询数据库(例如Python)的源代码中,查询数据库以获得每个用户的行:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT * FROM my_table where userid = $userid

考虑到SQL语言本身和数据库性能,它是最好的/优雅的解决方案吗?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-09-20 04:32:01

我想你要找的东西是这样的

代码语言:javascript
代码运行次数:0
运行
复制
select * from my_table where userid in
(select userid from my_table
 group by userid
 order by count(*) desc
 limit 2)
票数 3
EN

Stack Overflow用户

发布于 2013-09-20 04:45:17

要获取行并保持顺序,请使用带有aggregation的join

代码语言:javascript
代码运行次数:0
运行
复制
select t.*
from my_table t join
     (select userid, count(*) as cnt
      from my_table
      group by userid
      order by count(*) desc
      limit 2
     ) top2
     on t.userid = top2.userid
order by top2.cnt desc, userid;
票数 2
EN

Stack Overflow用户

发布于 2013-09-20 04:29:09

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT TOP 2 userid, count(*) AS n_of_rows 
FROM my_table 
GROUP BY userid 
ORDER BY count(*) desc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18904240

复制
相关文章

相似问题

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