@Bohemian から MySQL 固有の優れた回答を得ました: </p> <pre class="brush:php;toolbar:false;">select * from (select * from mytable order by `Group`、年齢記述、人物) x `Group` ごとにグループ化</pre> <p>これを基に構築できれば良いのですが、その方法がわかりません。 </p>
P粉3402642832023-08-22 19:25:52
他のデータベースでは、ROW_NUMBER
を使用してこの機能を実現できます。 MySQL は ROW_NUMBER
をサポートしていませんが、変数
オンライン デモ: sqlfiddle
編集 bluefeet が非常によく似た回答を投稿していることに今気づきました。「彼に 1 を与えてください。」しかし、この答えには 2 つの小さな利点があります:
したがって、誰かに役立つ場合に備えて残しておきます。
P粉4045397322023-08-22 13:19:02
これを行う 1 つの方法は、UNION ALL
を使用することです (デモ付きの SQL Fiddle を参照)。これは 2 つのグループに対して機能します。複数のグループがある場合は、group
番号を指定し、各 group
:
これを実現するには複数の方法があります。この記事を参照して、状況に最適な方法を決定してください:
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
###編集:###これは、各レコードの行番号を生成するので、うまくいくかもしれません。上記のリンクの例を使用すると、行番号が 2 以下のレコードのみが返されます:
リーリー参照
デモ