ホームページ > データベース > mysql チュートリアル > SQL を使用して各グループの最年長者を見つけるにはどうすればよいですか?

SQL を使用して各グループの最年長者を見つけるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-23 22:37:11
オリジナル
516 人が閲覧しました

How to Find the Oldest Person in Each Group Using SQL?

SQL を使用して各グループの最年長者を効率的に特定する

データベース クエリでは、多くの場合、特定のグループ内の最大値を見つける必要があります。 この例では、persongroupage 列を含むテーブルから各グループの最高齢者を特定する方法を示します。

解決策:

このアプローチでは、

を利用してグループ内の各人の年齢を比較します。 一致しない行は、そのグループ内の最年長の人を表します。LEFT JOIN

実装:

<code class="language-sql">SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND o.Age < b.Age
WHERE b.Age IS NULL;</code>
ログイン後にコピー

説明:

  • : Persons o テーブルには、Persons (「最も古い」を表す) というエイリアスが付けられます。o
  • : LEFT JOIN Persons b は、LEFT JOIN (「より大きな時代」を表す) としてエイリアスされた Persons テーブルで実行されます。 これにより、b の各行が、同じグループ (o) 内の古い行 (o.Group = b.Group) と結合されます。 o.Age < b.Age
  • : この重要な句は結果をフィルターします。
  • 内の人物が WHERE b.Age IS NULL 内に一致しない場合 (つまり、o が NULL である)、そのグループ内に年上の人がいないことを意味します。 したがって、各グループの最年長者のみが選択されます。b b.Age
重要な考慮事項:

    を使用すると、メンバーが 1 人だけのグループから最年長の人が誤って除外されてしまいます。
  • INNER JOINこの方法は、このタイプのクエリに対して非常に効率的で広く推奨される手法です。 同様のアプローチについては、「SQL アンチパターン 第 1 巻: データベース プログラミングの落とし穴の回避」で説明されています。

以上がSQL を使用して各グループの最年長者を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート