Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengisih Baris Berdasarkan Cap Masa Bersyarat dalam MySQL?

Bagaimana untuk Mengisih Baris Berdasarkan Cap Masa Bersyarat dalam MySQL?

Linda Hamilton
Lepaskan: 2024-11-13 04:46:01
asal
438 orang telah melayarinya

How to Sort Rows Based on a Conditional Timestamp in MySQL?

MySQL ORDER BY CASE Isu Isih

Dalam MySQL, klausa ORDER BY membenarkan anda mengisih hasil pertanyaan berdasarkan lajur yang ditentukan. Walau bagaimanapun, anda mungkin menghadapi kesukaran semasa mengisih berbilang lajur yang bergantung pada keadaan tertentu.

Pertimbangkan senario berikut:

Anda mempunyai jadual dengan dua lajur, cap waktu_satu dan cap masa_dua. Anda perlu mendapatkan semula semua baris yang sama ada id_one atau id_two adalah sama dengan 27. Selain itu, anda ingin mengisih hasil berdasarkan sama ada timestamp_one atau timestamp_two bergantung pada sama ada id_one atau id_two ialah 27.

Sedangkan pertanyaan berikut dengan betul mendapatkan semula yang diperlukan baris:

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
Salin selepas log masuk

Ia mengisih baris mengikut setiap lajur secara individu, dan bukannya menggabungkannya ke dalam satu cap masa untuk mengisih.

Untuk menyelesaikan isu ini, anda boleh menggunakan pertanyaan yang diubah suai berikut:

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 
Salin selepas log masuk

Dalam pertanyaan yang diubah suai ini, kami memudahkan klausa ORDER BY dengan menggunakan satu ungkapan CASE untuk tentukan susunan pengisihan. Ini membolehkan kami mengisih baris berdasarkan cap waktu gabungan yang memilih lajur yang sesuai secara dinamik (cap_satu atau cap_dua) bergantung pada nilai id_satu dan id_dua.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Baris Berdasarkan Cap Masa Bersyarat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan