Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich eine SQL-Abfrage erstellen, die Spalte A als primären Sortierschlüssel verwendet, aber wenn Spalte A leer ist, Spalte B als primären Sortierschlüssel verwendet?

Mit MariaDB habe ich eine Ansicht, die Informationen liefert, unter anderem über das Datum der Veranstaltung und ob die Einladung angenommen wurde. Das Feld von eventdate 是类型为 date 的事件日期。 accepted 是类型为 tinyint ist 0, wenn die Einladung abgelehnt wird, 1, wenn die Einladung angenommen wird, andernfalls ist es standardmäßig NULL.

Ich möchte eine Abfrage entwickeln, die nach akzeptiert und Ereignisdatum sortiert, sodass mein acceptedeventdate 排序,这样我的NULL值将出现在eventdate顺序的最前面。然而,如果accepted不为NULL,则希望按照eventdateNULL

-Wert in der Ereignisdatum-Reihenfolge zuerst angezeigt wird. Wenn accepted jedoch nicht

NULL

ist, möchten Sie nach eventdate sortieren.

从邀请视图中选择* ORDER BY已接受,eventdateMeine aktuelle Anfrage lautet:

accepted = NULL Diese Abfrage sortiert die Tabelle jedoch so, dass alle -Werte vorne stehen, alle 0

-Werte am Ende stehen und schließlich alle

1

-Werte am Ende stehen, etwa so:

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
🎜Ich hoffe, ähnliche Ergebnisse zu erzielen: 🎜
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粉052724364370 Tage vor618

Antworte allen(1)Ich werde antworten

  • P粉242126786

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

    一种方法是使用CASE条件排序结果

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

    结果:

    id eventname eventdate accepted
    1 Event 1 2022-04-14 null
    2 Event 2 2022-04-25 null
    3 Event 3 2022-03-28 0
    5 Event 5 2022-04-14 1
    6 Event 6 2022-05-01 1
    4 Event 4 2022-05-03 0

    Antwort
    0
  • StornierenAntwort