MySqlでは、を使用するときにMAX()
関数を使用して最大値を取得GROUP BY
できますが、同じことを実行して最長のテキスト文字列を取得するにはどうすればよいですか?
サンプルテーブル:
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.
トリッキーな部分はORDER BY id ASC
、一番古いエントリを一番上に表示したいということです。そして、post_id
私が使用できるものではないものでグループ化してORDER
、最も長いエントリを取得したいと思いbody
ます。
サンプルクエリ:
SELECT post_id, title, MAX(body) // obviously MAX() doesn't work here
FROM posts
GROUP BY post_id
ORDER BY id ASC
必要な出力:
post_id|_title__________|_body_____________________________________________
ZXBF1J | Favorite Color | My favorite color is blue, no wait, yelloooow!
AR3D47 | Quest | To seek the Holy Grail.
body
ここでも重要なのは、に基づいて順序を維持しながら最長のものを選択することid
です。