Rumah > Artikel > pangkalan data > Bagaimana untuk Memesan Baris Berdasarkan Berbilang Lajur Cap Masa dalam MySQL dengan Penyata CASE?
MYSQL ORDER BY CASE Isu
Soalan ini menimbulkan cabaran dalam menyusun baris berdasarkan lajur tertentu bergantung pada keadaan WHERE. Pertimbangkan pangkalan data yang disediakan dengan empat baris dan lajur cap masa. Matlamatnya adalah untuk menyusun baris supaya kedua-dua lajur cap masa dianggap sebagai kriteria pesanan tunggal.
Pertanyaan yang diberikan pada mulanya mengisih cap masa berdasarkan medan id_one dan id_two secara berasingan:
SELECT * FROM tablename WHERE id_one=27 OR id_two=27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one END DESC, CASE WHEN id_two=27 THEN timestamp_two END DESC
Pendekatan ini menghasilkan output di mana baris diisih dalam setiap id_one atau id_two kumpulan, tetapi bukan sebagai susunan cap masa gabungan.
Untuk mencapai pesanan yang diingini, kita boleh menggunakan pertanyaan yang diubah suai sedikit:
SELECT id_one, id_two, timestamp_one, timestamp_two FROM tablename WHERE id_one = 27 OR id_two = 27 ORDER BY CASE WHEN id_one=27 THEN timestamp_one WHEN id_two=27 THEN timestamp_two END DESC
Dalam pertanyaan yang disemak ini, kedua-dua cap masa_satu dan cap masa_dua dipertimbangkan untuk pesanan , tanpa mengira lajur ID yang sepadan dengan keadaan WHERE. Pernyataan CASE memilih cap masa yang sesuai berdasarkan nilai id_one dan id_two.
Pengubahsuaian ini menghasilkan output yang diingini, di mana baris disusun sebagai lajur cap masa tunggal, dengan mengambil kira kedua-dua cap waktu_satu dan cap masa_two:
Atas ialah kandungan terperinci Bagaimana untuk Memesan Baris Berdasarkan Berbilang Lajur Cap Masa dalam MySQL dengan Penyata CASE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!