Bagaimana untuk mengelakkan pengumpulan pada lajur tertentu
P粉667649253
P粉667649253 2023-07-25 14:08:22
0
1
369

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


P粉667649253
P粉667649253

membalas semua (1)
P粉744691205

Anda perlu menggunakan subkueri untuk mencapai ini. Sebenarnya, anda perlu mendapatkan versi rekod maksimum setiap ID janji temu:

SELECT appointment_record_version_number, appointment_id, appointment_pallets AS close_pallets, appointment_units AS close_units FROM b.dh AS t1 WHERE t1.appointment_record_version_number = ( SELECT MAX(appointment_record_version_number) FROM b.dh WHERE b.dh.data = t1.data ) AND last_updated_datetime BETWEEN '2023-06-01' AND '2023-06-30' AND warehouse_id = 'xxx'

Anda juga boleh menggunakan pernyataan JOIN untuk memilih nilai maksimum, yang kadangkala lebih pantas:

SELECT t1.appointment_record_version_number, t1.appointment_id, t1.appointment_pallets AS close_pallets, t1.appointment_units AS close_units FROM b.dh AS t1 LEFT JOIN b.dh AS t2 ON ( t1.appointment_record_version_number = t2.appointment_record_version_number AND t1.appointment_id < t2.appointment_id ) WHERE t2.appointment_record_version_number IS NULL AND last_updated_datetime BETWEEN '2023-06-01' AND '2023-06-30' AND warehouse_id = 'xxx';

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.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!