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

サブスクライバーの投稿とユーザー自身の投稿を表示する

    クエリを次のように変更して行うことができます:

    SELECT POSTS.*
    FROM POSTS
    LEFT JOIN SUBSCRIBERS
    ON POSTS.AUTHORID = SUBSCRIBERS.PROFILEID
    WHERE SUBSCRIBERS.SUBSCRIBERID = ? OR POSTS.AUTHORID = ?
    GROUP BY POSTS.POSTID ORDER BY POSTS.POSTID DESC LIMIT 10 
    

    ユーザー自身の投稿も選択します。これがお役に立てば幸いです。

    更新:GROUP BY POSTS.POSTIDを追加 したがって、POSTSでデータを検索するだけで、重複が削除されます。 テーブル。

    値を渡すようにクエリを実行する場合-例: ID 1のユーザーの場合、クエリは次のようになります:

    SELECT POSTS.*
    FROM POSTS
    LEFT JOIN SUBSCRIBERS
    ON POSTS.AUTHORID = SUBSCRIBERS.PROFILEID
    WHERE SUBSCRIBERS.SUBSCRIBERID = 1 OR POSTS.AUTHORID = 1 GROUP BY POSTS.POSTID
    ORDER BY POSTS.POSTID DESC LIMIT 10
    

    結果は:

    PostID  AuthorID    PostDate    PostBody
    
    3       1   2012-12-21  Oh Wait
    2       3   2012-12-21  Bye Bye World
    1       2   2012-12-20  Hello Word
    

    これは、selectクエリに値を適切に渡すときに得られるものです。 SUBSCRIBERIDに渡される値 およびAUTHORID すべき 同じである。 LEFTJOINで問題が解決します。




    1. Mysql日付範囲リストから各日付を生成します

    2. Oracleで最後に実行されたSQLステートメントを取得して変数値をバインドする方法

    3. 1対多のSQLSELECTを1行に

    4. MariaDBの日付から曜日名を取得する3つの方法