Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah saya boleh mencipta pertanyaan SQL yang menggunakan Kol A sebagai kunci isihan utama, tetapi jika Kol A kosong, gunakan Kol B sebagai kunci isihan utama?

Menggunakan MariaDB, saya mempunyai pandangan yang memberikan maklumat termasuk tarikh acara dan sama ada jemputan itu diterima. Medan eventdate 是类型为 date 的事件日期。 accepted 是类型为 tinyint ialah 0 jika jemputan ditolak, 1 jika jemputan diterima, jika tidak, ia lalai kepada NULL.

Saya ingin membangunkan pertanyaan yang mengisih mengikut diterima dan eventdate supaya nilai acceptedeventdate 排序,这样我的NULL值将出现在eventdate顺序的最前面。然而,如果accepted不为NULL,则希望按照eventdateNULL

saya akan muncul dahulu dalam susunan eventdate. Walau bagaimanapun, jika diterima bukan

NULL

, anda mahu mengisih mengikut eventdate.

从邀请视图中选择* ORDER BY已接受,eventdatePertanyaan semasa saya ialah:

accepted = NULL Walau bagaimanapun, pertanyaan ini mengisih jadual supaya semua ​​nilai berada di hadapan, semua 0

nilai berada di penghujung, dan akhirnya semua

1

nilai berada di penghujung, seperti ini:

eventname | eventdate  | accepted
---------------------------------
Event 1   | 2022-04-14 | NULL
Event 2   | 2022-04-25 | NULL
Event 3   | 2022-03-28 | 0
Event 4   | 2022-05-03 | 0
Event 5   | 2022-04-14 | 1
Event 6   | 2022-05-01 | 1
🎜Saya berharap dapat hasil yang serupa dengan ini: 🎜
eventname | eventdate  | accepted
---------------------------------
Event 1   | 2022-04-14 | NULL
Event 2   | 2022-04-25 | NULL
Event 3   | 2022-03-28 | 0
Event 5   | 2022-04-14 | 1
Event 6   | 2022-05-01 | 1
Event 4   | 2022-05-03 | 0
🎜
P粉052724364P粉052724364421 hari yang lalu645

membalas semua(1)saya akan balas

  • P粉242126786

    P粉2421267862023-09-16 09:12:10

    Salah satu cara ialah menggunakan keadaan CASE untuk menyusun keputusan

    SELECT * 
    FROM  invite_view 
    ORDER BY CASE WHEN accepted IS NULL THEN accepted
                  ELSE eventDate
             END

    Hasil:

    id nama acara eventdate diterima
    1 Acara 1 2022-04-14 null
    2 Acara 2 2022-04-25 null
    3 Acara 3 2022-03-28 0
    5 Acara 5 2022-04-14 1
    6 Acara 6 2022-05-01 1
    4 Acara 4 2022-05-03 0

    balas
    0
  • Batalbalas