2

次のクエリを作成しました。

 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_pictures.aid = cpg_albums.aid である cpg_albums テーブルと結合したいと思います。

4

1 に答える 1

0

これを試しましたか?

 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 をシミュレートすることもできます。

于 2013-01-08T08:05:58.117 に答える