sql备忘 :分组随机排序,并从分组中取n条数据

select * from (
    select *,
    @group_index := CASE WHEN @prev_group = province THEN @group_index + 1 ELSE 1 END AS group_index,
    @prev_group := province
    from (
        select * from sb_node order by province,rand()
    ) AS T1
) as T2 where group_index <=[n]

参考:http://stackoverflow.com/questions/2643314/mysql-group-by-limit

讨论

  1. unieagle

    我···看不懂语法,这@是干嘛的···还有:=

  2. 冥王星2011

    @用来声明变量,order by province之后数据相当于根据province分组了,然后给数据增加一个分组内的序号group_index,之后想取几个根据group_index查就ok啦

加入讨论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据