Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memesan Keputusan PostgreSQL Berdasarkan Susunan Nilai dalam Klausa IN?

Bagaimanakah Saya Boleh Memesan Keputusan PostgreSQL Berdasarkan Susunan Nilai dalam Klausa IN?

Susan Sarandon
Susan Sarandonasal
2025-01-19 10:51:10494semak imbas

How Can I Order PostgreSQL Results Based on the Order of Values in an IN Clause?

Kawal Susunan Baris dalam Pertanyaan PostgreSQL Menggunakan Klausa IN

Fasal

PostgreSQL IN, walaupun berkuasa untuk penapisan, tidak semestinya menjamin susunan baris tertentu. Jika anda perlu mendapatkan semula baris yang disusun mengikut urutan dalam senarai IN anda, penyelesaian menggunakan binaan VALUES (tersedia dalam PostgreSQL 8.2 dan lebih baru) menyediakan penyelesaian.

Pendekatan ini mencipta subkueri yang memetakan ID daripada senarai IN anda kepada pesanan tersuai. Pertanyaan utama kemudiannya menyertai subkueri ini untuk memesan keputusan. Begini caranya:

<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. Setiap baris dalam x memasangkan ID daripada senarai IN dengan susunan yang diingini (ordering). Operasi JOIN memautkan jadual sementara ini ke jadual comments berdasarkan lajur id. Akhir sekali, ORDER BY x.ordering mengisih hasil mengikut susunan yang ditakrifkan dalam konstruk VALUES.

Kaedah ini secara berkesan membolehkan anda menyesuaikan susunan baris yang dikembalikan oleh pertanyaan yang melibatkan klausa IN, memberikan kawalan yang tepat ke atas pembentangan data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Keputusan PostgreSQL Berdasarkan Susunan Nilai dalam Klausa IN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn