Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memesan Baris Berdasarkan Berbilang Lajur Cap Masa dalam MySQL dengan Penyata CASE?

Bagaimana untuk Memesan Baris Berdasarkan Berbilang Lajur Cap Masa dalam MySQL dengan Penyata CASE?

Susan Sarandon
Susan Sarandonasal
2024-11-15 09:59:02575semak imbas

How to Order Rows Based on Multiple Timestamp Columns in MySQL with CASE Statement?

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:


| id_one | id_dua | cap masa_satu | cap waktu_dua |

| 27 | 35 | 9:30 | NULL |

| 35 | 27 | NULL | 9:33 |

| 27 | 35 | 9:34 | NULL |

| 35 | 27 | NULL | 9:35 |

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!

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