Memastikan Keputusan Dipesan Menggunakan IN dalam Pertanyaan PostgreSQL
Pengendali IN
PostgreSQL, walaupun cekap, tidak semestinya menjamin susunan hasil. Artikel ini menunjukkan cara untuk mendapatkan semula baris dalam susunan tepat yang dinyatakan dalam senarai IN
.
Klausa standard IN
mengembalikan keputusan dalam susunan yang tidak dapat diramalkan, tanpa mengira susunan senarai input. Untuk mengekalkan ketertiban, kaedah yang mudah tetapi berkesan menggunakan binaan VALUES
(tersedia sejak PostgreSQL 8.2).
VALUES
membenarkan membuat jadual sementara yang mengaitkan setiap nilai IN
dengan susunan tertentu. Jadual sementara ini kemudiannya digabungkan dengan jadual utama anda, membolehkan pesanan berdasarkan urutan yang ditetapkan. Pertanyaan ilustrasi:
<code class="language-sql">SELECT c.* FROM comments c JOIN ( VALUES (1, 1), (3, 2), (2, 3), (4, 4) ) AS x (id, ordering) ON c.id = x.id ORDER BY x.ordering;</code>
Pertanyaan ini membina jadual sementara x
menggunakan VALUES
, memetakan setiap id
kepada nilai ordering
. Gabungan dengan jadual comments
(c
) memastikan keputusan dikembalikan mengikut susunan yang ditakrifkan dalam klausa VALUES
. Klausa akhir ORDER BY x.ordering
menjamin output jujukan yang diingini.
Teknik ini memastikan hasil yang konsisten dan boleh diramal, terutamanya penting apabila susunan elemen dalam senarai IN
adalah penting untuk logik aplikasi. Pendekatan ini sangat disyorkan untuk situasi yang menuntut output tersusun daripada pertanyaan pangkalan data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjamin Keputusan Dipesan Apabila Menggunakan IN dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!