Saya mempunyai jadual data tentang janji temu dan apabila data berkaitan dikemas kini, setiap janji temu boleh mempunyai berbilang baris data. Saya ingin memilih rekod terakhir setiap janji temu untuk mendapatkan gambar terkini setiap janji temu.
Dalam kod yang dilampirkan, saya terpaksa mengumpulkan mengikut close_pallets dan close_units, yang mempengaruhi perkara yang saya lihat (iaitu berbilang baris dikembalikan setiap janji temu). Saya mahu mengumpulkan hanya dengan a.appointment_id supaya saya mendapat satu baris setiap temu janji. Apakah yang perlu saya lakukan?
SELECT MAX(nombor_versi_rekod_jawatan), appointment_id, appointment_pallets AS close_pallets, appointment_units AS close_units DARI b.dh DI MANA last_updated_datetime ANTARA '2023-06-01' DAN '2023-06-30' DAN warehouse_id = 'xxx' KUMPULAN OLEH appointment_id, close_pallets, close_units
Anda perlu menggunakan subkueri untuk mencapai ini. Sebenarnya, anda perlu mendapatkan versi rekod maksimum setiap ID janji temu:
Anda juga boleh menggunakan pernyataan JOIN untuk memilih nilai maksimum, yang kadangkala lebih pantas:
Bergantung pada kes penggunaan anda, terutamanya jika pangkalan data anda besar, anda boleh menggunakan subkueri atau indeks tambahan untuk mengoptimumkan permintaan lagi, tetapi ia sudah cukup pantas.