sql >> Database >  >> RDS >> Mysql

MySQL GROUP BY/ORDER BY probleem

Dat is eigenlijk niet waar. Het zal een willekeurige rij retourneren. In de praktijk is dit vaak de eerste rij in de volgorde van de primaire sleutel, maar er is geen garantie. Andere databases dan MySQL staan ​​deze oefening niet toe en geven een foutmelding.

Hoe dan ook, een manier om de hoogste ID van ongelezen berichten op te halen, is door tweemaal in de berichtentabel te komen. De tweede join zoekt alleen naar ongelezen berichten. Bijvoorbeeld:

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. Maak verbinding met een mysql-database via SSH via PHP

  2. pas pager aan in psql

  3. Een gegevensmodel voor een app voor het boeken van medische afspraken

  4. Waarom primaire sleutels belangrijk zijn en hoe u er een kiest?