Saya berharap untuk mengurutkan item yang dikembalikan dalam kueri berikut dengan urutan yang mereka masukkan ke dalam fungsi IN () .
MEMASUKKAN:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
KELUARAN:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Ada ide?
FIELD(letter, 'A', 'C')
, daftar akan mengembalikan entri dengan huruf B terlebih dahulu (dengan asumsi satu set rekaman denganA | B | C
nilai). Untuk menghindarinya, balikkan daftar dan gunakan DESC, misFIELD(letter, 'C', 'A') DESC
.Pilihan lain dari sini: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
Jadi dalam kasus Anda (belum teruji) akan
Bergantung pada apa yang Anda lakukan, saya merasa ini agak aneh tetapi selalu berhasil setelah sedikit bermain dengannya.
sumber
Cobalah sesuatu seperti
sumber
Mungkin ini bisa membantu seseorang (p_CustomerId diteruskan dalam SP):
Deskripsi: Saya ingin menampilkan daftar akun. Di sini saya mengirimkan id pelanggan di sp. Sekarang ini akan mencantumkan nama akun dengan akun yang ditautkan ke pelanggan yang ditampilkan di atas diikuti oleh akun lain dalam urutan abjad.
sumber
Anda memerlukan kolom lain (numerik) di tabel Anda, di mana Anda menentukan urutan sortir. Klausa IN tidak berfungsi seperti ini.
sumber
gunakan saja
hindari situasi seperti itu
akan diakhiri dengan baris hasil tidak berurutan: 1 dan 11 alternatif
sumber