Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengekalkan Susunan Baris dalam Pertanyaan SQL dengan Klausa WHERE IN?

Bagaimana untuk Mengekalkan Susunan Baris dalam Pertanyaan SQL dengan Klausa WHERE IN?

Barbara Streisand
Barbara Streisandasal
2024-10-30 03:34:28983semak imbas

How to Maintain Row Order in SQL Queries with WHERE IN Clause?

Mengawal Susunan Baris dengan Klausa WHERE IN

Dalam pernyataan Bahasa Pertanyaan Berstruktur (SQL) yang menggunakan klausa WHERE IN, baris yang dikembalikan mungkin tidak sentiasa mematuhi tertib yang dinyatakan dalam klausa.

Memelihara Susunan Baris dengan Fungsi FIELD()

Untuk membetulkannya, seseorang boleh menggunakan fungsi FIELD() bersama-sama dengan klausa ORDER BY. Fungsi FIELD() memberikan kedudukan kepada setiap baris berdasarkan susunan nilai yang ditentukan dalam klausa IN. Dengan menyusun baris mengikut kedudukan yang ditetapkan ini, seseorang boleh mengekalkan susunan asal daripada klausa WHERE IN.

Sebagai contoh, pertimbangkan pertanyaan SQL berikut:

SELECT *
FROM table
WHERE id IN (118, 17, 113, 23, 72);

Pertanyaan ini mengembalikan baris dalam susunan menaik berdasarkan lajur ID, mengabaikan susunan yang dinyatakan dalam klausa WHERE IN. Untuk mendapatkan baris dalam susunan yang ditentukan oleh klausa IN, laksanakan pertanyaan berikut:

SELECT *
FROM table
WHERE id IN (118, 17, 113, 23, 72)
ORDER BY FIELD(id, 118, 17, 113, 23, 72);

Dalam pertanyaan ini, klausa ORDER BY menyusun baris mengikut susunan nilai (118, 17, 113, 23, 72) yang dinyatakan dalam fungsi FIELD(). Oleh itu, baris yang dikembalikan akan mematuhi urutan yang ditakrifkan dalam klausa WHERE IN.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Susunan Baris dalam Pertanyaan SQL dengan Klausa WHERE 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