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

MYSQLはテーブルから最新の投稿を選択します

    IDが変更されない限り、IDは理論的には機能します...

    「date」と呼ばれるテーブル構造のタイムスタンプフィールドを使用し、デフォルト値として「CURRENT_TIMESTAMP」を使用することをお勧めします。これにより、挿入時にレコードに日付/時刻が自動入力されます...

    このフィールドで注文DESC、制限x

    また、グループ化のおかげで間違ったデータが表示されるケースを何度も経験しました...ORDERBYとLIMITを適用する前にデータが正しいことを確認してください

    user1からuser1に投稿を取得するために、グループ化する必要はありません:

    SELECT * FROM posts 
    WHERE toID=fromID
    ORDER BY date DESC LIMIT 3
    

    *からuser1への投稿を取得する場合:

    SELECT * FROM posts 
    WHERE toID="USER1_ID"
    ORDER BY date DESC LIMIT 3
    

    *からuser1への投稿を取得するには、一意のユーザーのみ:

    SELECT * FROM posts 
    WHERE toID="USER1_ID"
    GROUP BY FromID
    ORDER BY date DESC LIMIT 3
    

    グループ化が適用された後にORDERBYが結果に適用されるため、GROUPEDレコードがORDER BYで順序付けられないという問題が発生することがあります...回避策を実行するには:

    SELECT * FROM (
      SELECT * FROM posts 
      WHERE toID="USER1_ID"
      ORDER BY date DESC
    ) as `derived` GROUP BY FromID LIMIT 3
    

    最近自分に投稿を送信した最後の3人のユーザーを取得するには:

    SELECT * FROM (
      SELECT * FROM posts 
      WHERE toID=fromID
      ORDER BY date DESC
    ) as `derived` GROUP BY FromID LIMIT 3
    


    1. postgres9.5でアップサートを正しく行う方法

    2. jOOQを使用した間隔でdate_sub()関数を実装する

    3. Jdbcでバインド変数を実行するSQLクエリ

    4. phpを使用してmysqlに接続する