Pilih baris unik yang dikumpulkan mengikut nilai minimum
Dalam bidang operasi pangkalan data, kami sering menghadapi tugas mengumpulkan data mengikut nilai minimum medan tertentu semasa memilih baris unik. Katakan anda mempunyai jadual dengan berbilang baris untuk setiap pengecam unik, contohnya:
<code>| key_id | id | record_date | other_cols | |---|---|---|---| | 1 | 18 | 2011-04-03 | x | | 2 | 18 | 2012-05-19 | y | | 3 | 18 | 2012-08-09 | z | | 4 | 19 | 2009-06-01 | a | | 5 | 19 | 2011-04-03 | b | | 6 | 19 | 2011-10-25 | c | | 7 | 19 | 2012-08-09 | d |</code>
Matlamatnya ialah untuk mendapatkan semula satu baris daripada setiap id unik, mewakili baris dengan tarikh_rekod terkecil.
Pendekatan biasa ialah menggunakan subkueri untuk mengenal pasti tarikh_ rekod minimum bagi setiap id dan kemudian menyambungkannya kembali ke jadual asal:
<code>SELECT * FROM t WHERE record_date = (SELECT MIN(record_date) FROM t WHERE id = t.id)</code>
Walau bagaimanapun, kaedah ini tidak boleh mengendalikan entri tarikh_rekod minimum pendua dengan id yang sama, yang akan menghasilkan hasil berbilang baris.
Untuk menyelesaikan masalah ini, kami memerlukan penyelesaian yang memastikan baris unik. Salah satu pendekatan sedemikian ialah menggunakan gabungan dalaman dan jadual terbitan yang mengira tarikh_rekod minimum untuk setiap id:
<code>SELECT mt.* FROM MyTable mt INNER JOIN ( SELECT id, MIN(record_date) AS MinDate FROM MyTable GROUP BY id ) t ON mt.id = t.id AND mt.record_date = t.MinDate</code>
Gabungan dalam menjamin bahawa hanya baris dengan tarikh_ rekod minimum untuk setiap id dipilih, dengan berkesan menghasilkan jadual baris unik yang dikumpulkan mengikut nilai minimum.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris Berbeza Dikumpulkan Mengikut Nilai Minimum dalam Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!