sql >> Databáze >  >> RDS >> Mysql

Problém MySQL GROUP BY/ORDER BY

To ve skutečnosti není pravda. Vrátí náhodný řádek. V praxi se často jedná o první řádek v pořadí primárního klíče, ale neexistuje žádná záruka. Jiné databáze než MySQL tuto praxi neumožňují a způsobí chybu.

Jedním ze způsobů, jak získat nejvyšší ID nepřečtených zpráv, je připojit se k tabulce zpráv dvakrát. Druhé spojení hledá pouze nepřečtené zprávy. Například:

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. java.sql.SQLException:Nesprávná hodnota řetězce:'\xF0\x9F\x91\xBD\xF0\x9F...'

  2. Funkce RANK, DENSE_RANK a ROW_NUMBER v Oracle

  3. Získání oprávnění ke spuštění xp_cmdshell

  4. čárkami oddělený argument pro operátor IN, MySQL