Saya bertanya-tanya apakah ada jauh (mungkin cara yang lebih baik) untuk memesan dengan urutan nilai-nilai dalam klausa IN ().
Masalahnya adalah bahwa saya memiliki 2 pertanyaan, yang mendapatkan semua ID dan yang kedua yang mengambil semua informasi. Yang pertama membuat urutan ID yang saya ingin yang kedua memesan. ID dimasukkan dalam klausa IN () dengan urutan yang benar.
Jadi itu akan menjadi sesuatu seperti (sangat disederhanakan):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Masalahnya adalah bahwa kueri kedua tidak mengembalikan hasil dalam urutan yang sama bahwa ID dimasukkan ke dalam klausa IN ().
Salah satu solusi yang saya temukan adalah dengan meletakkan semua ID ke tabel temp dengan bidang penambahan otomatis yang kemudian bergabung ke dalam kueri kedua.
Apakah ada opsi yang lebih baik?
Catatan: Karena kueri pertama dijalankan "oleh pengguna" dan kueri kedua dijalankan dalam proses latar belakang, tidak ada cara untuk menggabungkan kueri 2 menjadi 1 menggunakan sub kueri.
Saya menggunakan MySQL, tapi saya pikir mungkin berguna untuk mencatat opsi apa yang ada untuk DB lain juga.
IN
danFIELD
parameter sama. Melakukan ini dalam kode program mungkin lebih cepat dengan menggunakan pengetahuan tambahan itu. Tentu saja, akan lebih bijaksana untuk menempatkan beban ini pada klien daripada server jika Anda memiliki kinerja server dalam pikiran.