select n random rows per specified group

前端 未结 3 1627
独厮守ぢ
独厮守ぢ 2020-12-10 19:53

I am struggling to find an optimal solution for the following problem. Suppose I have a table \'Table\' like this:

id    name    report_id
 1    name1    1
          


        
3条回答
  •  渐次进展
    2020-12-10 20:33

    Try this:

      SELECT
        id, 
        name,
        report_id
      FROM
      (
        SELECT id,
            report_id,
            name,
            CASE WHEN @name != name THEN @rn := 1 ELSE @rn := @rn + 1 END rn,
            @name:=name
         FROM (SELECT * FROM tbl ORDER BY RAND()) a,
            (SELECT @rn:=0, @name := NULL) r
         ORDER BY name
      ) s
      WHERE rn <= 10;
    

    SQL FIDDLE DEMO

提交回复
热议问题