sql >> Databasteknik >  >> RDS >> Mysql

MySQL GROUP BY/ORDER BY problem

Det är faktiskt inte sant. Det kommer att returnera en slumpmässig rad. I praktiken är detta ofta den första raden i primärnyckelordning, men det finns ingen garanti. Andra databaser än MySQL tillåter inte denna praxis och kommer att skapa ett fel.

Hur som helst, ett sätt att hämta högsta ID för olästa meddelanden är att gå med i meddelandetabellen två gånger. Den andra anslutningen letar bara efter olästa meddelanden. Till exempel:

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. Android:SQLite sparar strängarray?

  2. mysql limit kollaps, vilket resulterar i datainteraktion

  3. MySQL:Få genomsnittliga tidsskillnader?

  4. Hitta aktuella lediga jobb för Oracle Forms &Reports