Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memesan Keputusan SQL untuk Memadankan Susunan Nilai dalam Senarai IN?

Bagaimanakah Saya Boleh Memesan Keputusan SQL untuk Memadankan Susunan Nilai dalam Senarai IN?

Susan Sarandon
Susan Sarandonasal
2025-01-19 11:11:10458semak imbas

How Can I Order SQL Results to Match the Order of Values in an IN List?

Susun keputusan mengikut susunan senarai IN

Dalam SQL, senario biasa ialah menggunakan operator IN untuk mendapatkan semula data berdasarkan set nilai yang ditentukan. Dalam kes ini, anda mungkin mahu memesan keputusan dalam susunan dalam senarai IN.

Dalam versi PostgreSQL sebelum 8.4, satu cara untuk mencapai pengisihan ini adalah dengan menggunakan subkueri berkorelasi. Walau bagaimanapun, untuk 8.2 dan ke atas, pendekatan yang lebih cekap tersedia:

Fungsi NILAI

PostgreSQL memperkenalkan fungsi VALUES dalam versi 8.2, yang membolehkan penciptaan jadual dalam memori. Fungsi ini boleh digunakan untuk membina jadual sementara yang mengandungi susunan nilai yang dikehendaki:

<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>

Dalam pertanyaan ini:

  • Fungsi VALUES mencipta jadual sementara bernama "x" yang mengandungi dua lajur: "id" dan "pesanan".
  • Lajur "id" mengandungi nilai yang dinyatakan dalam klausa IN.
  • Lajur "pesanan" memberikan susunan berangka kepada setiap nilai, memastikan susunan keputusan yang dikehendaki.
  • Jadual temp "x" dicantumkan dengan jadual "ulasan" berdasarkan lajur "id" biasa.
  • Akhir sekali, keputusan diisih mengikut lajur "pesanan", menjana susunan ulasan yang diingini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Keputusan SQL untuk Memadankan Susunan Nilai dalam Senarai 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