Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Orang Tertua dalam Setiap Kumpulan dalam SQL?

Bagaimana untuk Mencari Orang Tertua dalam Setiap Kumpulan dalam SQL?

DDD
Lepaskan: 2025-01-23 22:52:10
asal
638 orang telah melayarinya

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

Dengan Cekap Mendapatkan Rekod Kedudukan Tertinggi dalam Data SQL Dikumpulkan

Contoh ini menunjukkan cara mengenal pasti orang tertua dalam setiap kumpulan dalam jadual SQL, dengan mengambil kira susunan abjad untuk menyelesaikan hubungan. Struktur jadual termasuk lajur 'Orang', 'Kumpulan' dan 'Umur':

Contoh Jadual:

Person Group Age
Bob 1 32
Jill 1 34
Shawn 1 42
Jake 2 29
Paul 2 36
Laura 2 39

Objektif: Cari orang tertua dalam setiap kumpulan, beri keutamaan mengikut abjad jika umur adalah sama.

Penyelesaian SQL:

<code class="language-sql">SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age < b.Age OR (o.Age = b.Age AND o.Person > b.Person))
WHERE b.Person IS NULL;</code>
Salin selepas log masuk

Penjelasan:

Pertanyaan ini menggunakan LEFT JOIN untuk membandingkan setiap orang (o) dengan semua orang lain dalam kumpulan yang sama (b). Fasal ON menapis untuk baris di mana sama ada:

  1. o.Age < b.Age: o lebih muda daripada b (maksudnya o bukan yang tertua).
  2. o.Age = b.Age AND o.Person > b.Person: o adalah umur yang sama dengan b, tetapi mengikut abjad kemudian (bermaksud o bukan yang tertua dalam susunan abjad).

Klausa WHERE b.Person IS NULL menapis mana-mana baris daripada o yang mempunyai padanan dalam b, meninggalkan hanya orang yang paling tua (atau mengikut abjad dahulu jika terdapat seri) dalam setiap kumpulan.

Penerokaan Selanjutnya:

Untuk pemahaman yang lebih komprehensif tentang teknik SQL lanjutan dan kemungkinan perangkap, rujuk sumber seperti "SQL Antipatterns Jilid 1: Mengelakkan Perangkap Pengaturcaraan Pangkalan Data."

Atas ialah kandungan terperinci Bagaimana untuk Mencari Orang Tertua dalam Setiap Kumpulan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan