ホームページ >データベース >mysql チュートリアル >mysql は GROUP BY グループ化を使用して最初の N レコードをフェッチするメソッドを実装します_MySQL
この記事の例では、mysql が GROUP BY グループ化を使用して最初の N レコードを取得する方法を説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
MySQL の GROUP BY グループ化は、最初の N レコードを取得することによって実装されます
mysql のグループ化、レコードの取得
GROUP BY の後の各グループの最初の 2 桁を取得する方法 次に、mysql で GROUP BY グループ化の最初の N レコードを取得する方法を説明します。
これはテストテーブルです(何を考えたかわかりませんが、そのときテーブル名にaaと入力しました、汗~~~~):
結果:
方法 1:
コードは次のとおりです:
SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT JOIN aa b ON a.ClsNo=b.ClsNo AND a.Score
分解分析:
1、 LEFT JOIN aa b ON a.ClsNo=b.ClsNo AND a.Score 同じクラス (各クラスに 4 人の生徒) で、現在の生徒よりも高いスコアの記録は、最も低いスコアの生徒が 3 つの記録を持つことを意味します 2. count(b を持つ a.id,a.SName,a.ClsNo,a.Score によるグループ化) .id)
a.id、a.SName、a.ClsNo、a.Score は学生 (学生ごとにグループ化) を表すことができ、count(b.id)
方法 2: コードは次のとおりです。 SELECT * FROM aa a WHERE 2>(SELECT COUNT(*) FROM aa WHERE ClsNo=a.ClsNo and Score>a.Score) ORDER BY a.ClsNo,a.Score DESC; 方法 3: コードは次のとおりです: SELECT * FROM aa WHERE id IN (SELECT id FROM aa WHERE ClsNo=a.ClsNo ORDER BY Score DESC LIMIT 2) ORDER BY a.ClsNo,a.Score DESC; さらに MySQL 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「完全な MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「完全な MySQL ストアド プロシージャ スキル」、「MySQL の概要」データベースロック関連スキル』と『MySQLでよく使う関数のまとめ』 この記事が皆さんの MySQL データベース計画に役立つことを願っています。
これはさらに興味深いと思います。各記録を取得して、同じクラス内に現在の生徒よりも高い成績を持つ生徒が 2 人未満いるかどうかを判断します。
このメソッドはテストに合格できませんでした。エラー 1235 (42000): このバージョンの MySQL はまだ「LIMIT & IN/ALL/ANY/SOME サブクエリ」をサポートしていません。これらのサブクエリでは制限を使用できません。