【问题标题】:mysql select 3 random rows of each typemysql选择每种类型的3个随机行
【发布时间】:2012-12-21 19:05:37
【问题描述】:

我创建了以下查询:

 SELECT random.aid, random.rand_pid, r3.filepath, r3.filename, r3.pid
 FROM 
 (SELECT r.aid,
    (SELECT r2.pid
     FROM cpg_pictures r2
     WHERE r2.aid = r.aid
     ORDER BY RAND() LIMIT 1) AS 'rand_pid'
 FROM cpg_pictures r
 GROUP BY r.aid
 ORDER BY r.aid DESC
 LIMIT 10
 ) random
 LEFT JOIN cpg_pictures AS r3 ON r3.pid = rand_pid

cpg_pictures 是一个有图片的表 并且aid是专辑ID

此查询将从每个相册 id 中随机获取 1 张图片,

我希望能够修改查询,以便我可以为每个专辑 ID 获取 3 张随机图片, 因此,我们将不胜感激。

我还想将这个最终结果加入 cpg_albums 表,其中 cpg_pictures.aid = cpg_albums.aid

【问题讨论】:

    标签: mysql random


    【解决方案1】:

    你试过了吗?

     SELECT random.aid, random.rand_pid, r3.filepath, r3.filename, r3.pid
     FROM 
     (SELECT r.aid,
        (SELECT r2.pid
         FROM cpg_pictures r2
         WHERE r2.aid = r.aid
         ORDER BY RAND() LIMIT 1) AS 'rand_pid'
     FROM cpg_pictures r
     GROUP BY r.aid
     ORDER BY r.aid DESC
     LIMIT 10
     ) random
     LEFT JOIN cpg_pictures AS r3 ON r3.pid = rand_pid
    

    你也可以模拟这个http://beyondrelational.com/modules/2/blogs/70/posts/10845/return-top-n-rows.aspx的1和2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 2012-12-24
      • 2013-12-16
      • 1970-01-01
      相关资源
      最近更新 更多