Memelihara Pesanan dalam PostgreSQL JOIN dengan Array Types: A Comprehensive Solution
Skema pangkalan data yang diberikan terdiri daripada dua jadual: item dan some_chosen_data_in_order. Tugas di tangan ialah untuk mendapatkan semula data daripada jadual item untuk baris tertentu dalam jadual some_chosen_data_in_order sambil mengekalkan susunan elemen dalam medan jenis tatasusunan.
Percubaan Tidak Berkesan:
Percubaan awal anda menggunakan JOIN dan subqueries gagal mengekalkan susunan elemen dalam medan jenis tatasusunan. Pendekatan ini tidak secara konsisten mengekalkan susunan unsur-unsur yang muncul dalam tatasusunan id_items.
Penyelesaian Berkesan:
Untuk menyelesaikan isu ini, gunakan pendekatan alternatif yang melibatkan unnest() function:
SELECT t.* FROM unnest(ARRAY[1,2,3,2,3,5]) item_id LEFT JOIN items t on t.id=item_id
Penjelasan:
Pertanyaan ini memanfaatkan fungsi unnest() untuk mengekstrak elemen individu daripada tatasusunan item_id, dengan berkesan mencipta baris sementara untuk setiap elemen. Selepas itu, kami melakukan LEFT JOIN dengan jadual item untuk mendapatkan semula data yang dikehendaki sambil mengekalkan susunan yang ditentukan.
Contoh:
Pertimbangkan jadual some_chosen_data_in_order yang mengandungi baris dengan id_item sebagai [1,2,3,2,3,5]. Melaksanakan pertanyaan yang dinyatakan di atas akan mengembalikan data yang berkaitan dengan item berikut (dalam susunan yang ditentukan):
Penyelesaian ini memastikan data yang diambil daripada jadual item sejajar dengan susunan elemen dalam medan jenis tatasusunan bagi jadual some_chosen_data_in_order.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Susunan Tatasusunan Apabila Menyertai Jadual dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!