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

MySQL GROUP BY /ORDERBYの問題

    それは実際には真実ではありません。ランダムな行を返します。実際には、これは主キーの順序の最初の行であることがよくありますが、保証はありません。 MySQL以外のデータベースではこの方法が許可されておらず、エラーが発生します。

    とにかく、未読メッセージの最大IDを取得する1つの方法は、メッセージテーブルを2回結合することです。 2番目の結合は、未読メッセージのみを検索します。例:

    SELECT  max(msg.ID) as MaxID
    ,       messages.from
    ,       max(unread.ID) as MaxUnreadID
    ,       users.userName
    FROM    users
    join    messages msg
    on      users.ID = msg.from
            and messages.to = ?
    left join    
            messages unread
    on      users.ID = unread.from
            and messages.to = ?
            and unread.read = 0
    GROUP BY
            users.ID
    ,       users.userName
    


    1. Oracleの数値フォーマット要素のリスト

    2. MySQLがレコードを削除しない

    3. サブクエリを使用せずに最大シーケンスの行のみを選択する方法は?

    4. MySQLクエリの複数の列インデックスを理解する