8

多くの異なる著者によるブログ投稿を含むテーブルがあります。私がやりたいことは、最新の 10 人の著者のそれぞれによる最新の投稿を表示することです。

各作成者の投稿は、テーブルに順番に追加されるだけです。つまり、1 人の作成者による一連の投稿が存在する可能性があります。これを行うための単一のクエリを考え出すのにかなりの時間を費やしています。

これにより、最後の 10 個の一意の作成者 ID が得られます。各作成者による最新の投稿を取得するためのサブ選択として使用できますか?

SELECT DISTINCT userid
FROM posts
ORDER BY postid DESC 
LIMIT 10
4

3 に答える 3

3
select userid,postid, win from posts where postid in (
SELECT max(postid) as postid
FROM posts 
GROUP BY userid
) 
ORDER BY postid desc 
limit 10

http://sqlfiddle.com/#!2/09e25/1

于 2012-04-16T21:27:11.590 に答える
1

すべての作成者の最後の postid のサブクエリと、postid DESC による順序が必要です。次に、その結​​果をpostsテーブルに結合します。

SELECT B.* FROM
(
    SELECT * FROM
    (
        SELECT userid,MAX(postid) postid
        FROM posts GROUP BY userid
    ) AA
    ORDER BY postid DESC
    LIMIT 10
) A INNER JOIN posts B
USING (user_id,post_id);

このインデックスがあることを確認してください

ALTER TABLE posts ADD INDEX user_post_ndx (userid,postid);
于 2012-04-16T21:19:42.607 に答える
1
SELECT userid
     , MAX(postid) AS lastpostid
FROM posts
GROUP BY userid
ORDER BY lastpostid DESC 
LIMIT 10
于 2012-04-16T22:02:20.687 に答える