sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag välja det längsta textfältet när jag använder GROUP BY i mysql, a la MAX()?

Du måste använda CHAR_LENGTH istället för LENGTH

SELECT a.id, a.post_id, a.body
FROM posts a INNER JOIN
(
    SELECT post_ID, title, MAX(CHAR_LENGTH(body)) totalLength
    FROM posts
    GROUP BY post_ID, title
) b ON a.post_id = b.post_ID AND
        a.title = b.title AND
        CHAR_LENGTH(a.body) = b.totalLength

Du kanske vill se skillnaden:CHAR_LENGTH( ) vs. LENGTH( )

SQLFiddle Demo



  1. SQL:Hjälp mig att optimera min SQL

  2. Automatiskt generera databasdiagram MySQL

  3. Saknade anslutningar i tomcat jdbc anslutningspool

  4. Jag har problem med att ansluta till min db på godaddy med PDO