sql >> データベース >  >> RDS >> Mysql

JOINクエリの結果を制限することは可能ですか?

    これは、テーブルが次のようになっていると仮定して、投稿ごとに最新の3つのコメントを含む投稿を取得する必要があります。

    投稿
    idpost_text

    コメント
    idpost_idcomment_text

    SELECT id, post_text, comment_text
    FROM
    (
        SELECT p.id, p.post_text, c.comment_text
               CASE
                 WHEN @id != p.id THEN @row_num := 1
                 ELSE @row_num := @row_num + 1
               END AS rank,
               @id := p.id
        FROM post p
        LEFT JOIN comment c ON ( c.post_id = p.id )
        JOIN ( SELECT @id:=NULL, @row_num:=0 ) x
        ORDER BY p.id,
                 c.id DESC -- newest comments first
    ) y
    WHERE rank <= 3;
    

    サブクエリは、最初に最近のコメントを取得し、投稿ごとに番号を付けるために使用されますが、外側の選択は古いコメントを削除します。



    1. OperationalError:カーソル_django_curs_<id>は存在しません

    2. mysql_real_escape_stringの後にストリップスラッシュを使用する

    3. MS Accessの破損パート1:一般的な原因

    4. JDBCを使用してファイルからPostgreSQLにデータをコピーする方法は?