In MySql è possibile utilizzare la funzione MAX()
per ottenere il valore più alto quando si utilizza GROUP BY
, come posso fare la stessa cosa per ottenere la stringa di testo più lunga? tavoloCome posso selezionare il campo di testo più lungo quando si utilizza GROUP BY in mysql, a la MAX()?
Esempio:
id_|_post_id|_title__________|_body_____________________________________________
1 | ZXBF1J | Favorite Color | My favorite color is blue.
2 | ZXBF1J | Favorite Color | My favorite color is blue, no wait...
3 | ZXBF1J | Favorite Color | My favorite color is blue, no wait, yelloooow!
4 | AR3D47 | Quest | To seek..
5 | AR3D47 | Quest | To seek the Holy
6 | AR3D47 | Quest | To seek the Holy Grail.
La parte difficile è che voglio ORDER BY id ASC
vedere le voci meno recenti sulla parte superiore, e voglio gruppo dal post_id
, che non è qualcosa che posso usare per ORDER
e ottieni il tempo più lungo body
.
Query di esempio:
SELECT post_id, title, MAX(body) // obviously MAX() doesn't work here
FROM posts
GROUP BY post_id
ORDER BY id ASC
uscita desiderata:
post_id|_title__________|_body_____________________________________________
ZXBF1J | Favorite Color | My favorite color is blue, no wait, yelloooow!
AR3D47 | Quest | To seek the Holy Grail.
nuovamente il tasto è selezionare il più lungo body
pur mantenendo l'ordine basato sulla id
.
Immagino che tu vinca dato che il tuo CHAR_LENGTH sembra essere migliore per i set di caratteri non latini – cwd