この例は、関係を解決するためのアルファベット順を考慮して、SQLテーブル内の各グループ内の最古の人を識別する方法を示しています。 テーブル構造には、「人」、「グループ」、「年齢」列が含まれます。
例テーブル:
人 | グループ | 年 |
---|---|---|
ボブ | 1 | 32 |
ジル | 1 | 34 |
ショーン | 1 | 42 |
jake | 2 | 29 |
paul | 2 | 36 |
laura | 2 | 39 |
目的:各グループで最も古い人を見つけて、年齢が同一である場合はアルファベット順に優先順位を付けます。
sqlソリューション:
SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age b.Person))
WHERE b.Person IS NULL;
です
説明:
このクエリは、 left join
を使用して、各人( o
)を同じグループ( b
)と比較します。 on
句は、列のフィルターであり、
o.age : o
はより若い
o o
は最古ではありません)。
:
o は
b と同じ年齢ですが、アルファベット順に(意味
o はアルファベットの順序ではありません)。
o で一致した行から任意の行を除去し、各グループに最古の人(または最初にネクタイがある場合はアルファベット順)のみを残します。
さらなる調査:
高度なSQL技術と潜在的な落とし穴をより包括的に理解するために、「SQL Antipatterns Volume 1:Databaseプログラミングの落とし穴を回避する」などのリソースを参照してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3