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
Lepaskan: 2025-01-19 11:11:10
asal
382 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan