首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql在每次事件中选择(n)行

问Mysql在每次事件中选择(n)行
EN

Stack Overflow用户
提问于 2013-01-14 21:25:02
回答 2查看 666关注 0票数 0

可能重复: mysql:使用组内的限制来获得每组的N个结果?

我需要执行一个select,它将返回每个唯一us_state的记录数(n)。

基本上,我希望找到一个与TOP(n)等价的值,但是由于MySQL不支持它,我是否可以使用类似的命令或方法来快速处理执行相同操作的专用代码?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-14 22:17:42

您要做的是选择每个组的多个记录。这可以通过在查询中使用类似于以下内容的变量来实现:

代码语言:javascript
复制
select *
from
(
    SELECT sid, 
        state, 
        votes,
        @prev := @curr,
        @curr := state,
        @rank := IF(@prev = @curr, @rank+1, 1) AS rank
    FROM
    (
      select t1.sid, state, votes
      FROM table1 t1
      INNER JOIN table2 t2
          ON t1.sid=t2.sid
    ) src, (SELECT @curr := null, @prev := null, @rank := 1) r
    ORDER BY state, votes desc
) src
where rank <= 2
order by state, votes;

请参阅与Demo

实现这一目标的其他方法概述如下:

用组内极限法得到每组N个结果?

票数 1
EN

Stack Overflow用户

发布于 2013-01-14 21:30:22

极限优化 in MySQL就是这样做的。

编辑

因为您希望它们按某种类型的列排序,所以还需要命令由子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14326949

复制
相关文章

相似问题

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