En MySql puede usar la función MAX()
para obtener el valor más alto al usar GROUP BY
, ¿cómo puedo hacer lo mismo para obtener la cadena de texto más larga? tabla¿Cómo puedo seleccionar el campo de texto más largo cuando uso GROUP BY en mysql, a la MAX()?
muestra:
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 difícil es que quiero ORDER BY id ASC
para ver las entradas más antiguas en la parte superior, y quiero grupo por el post_id
que no es algo que puedo utilizar para ORDER
, y obtener el más largo body
.
Consulta de ejemplo:
SELECT post_id, title, MAX(body) // obviously MAX() doesn't work here
FROM posts
GROUP BY post_id
ORDER BY id ASC
salida deseada:
post_id|_title__________|_body_____________________________________________
ZXBF1J | Favorite Color | My favorite color is blue, no wait, yelloooow!
AR3D47 | Quest | To seek the Holy Grail.
Una vez más la clave está en seleccionar la más larga body
mientras se mantiene el orden basado en la id
.
Supongo que ganas ya que tu CHAR_LENGTH parece ser mejor para los conjuntos de caracteres no latinos – cwd