Maison > Questions et réponses > le corps du texte
En utilisant MariaDB, j'ai une vue qui fournit des informations, notamment la date de l'événement et si l'invitation a été acceptée. Le champ de eventdate
是类型为 date
的事件日期。 accepted
是类型为 tinyint
est 0 si l'invitation est rejetée, 1 si l'invitation est acceptée, sinon il vaut par défaut NULL.
Je souhaite développer une requête qui trie par accepté
et eventdate
afin que ma valeur accepted
和 eventdate
排序,这样我的NULL值将出现在eventdate
顺序的最前面。然而,如果accepted
不为NULL,则希望按照eventdate
NULL
eventdate
. Cependant, si accepted
n'est pas NULL
, vous souhaitez trier pardate d'événement
.
从邀请视图中选择* ORDER BY已接受,eventdate
Ma requête actuelle est :
accepted = NULL
Cependant, cette requête trie le tableau de manière à ce que toutes les valeurs soient au début, toutes les valeurs 0
1
soient à la fin, comme ceci :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🎜J'espère obtenir des résultats similaires à celui-ci : 🎜
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粉2421267862023-09-16 09:12:10
Une façon consiste à utiliser la condition CASE pour trier les résultats
SELECT * FROM invite_view ORDER BY CASE WHEN accepted IS NULL THEN accepted ELSE eventDate END
Résultat :
id | nom de l'événement | date de l'événement | accepté |
---|---|---|---|
1 | Événement 1 | 2022-04-14 | null |
2 | Événement 2 | 2022-04-25 | null |
3 | Événement 3 | 2022-03-28 | 0 |
5 | Événement 5 | 2022-04-14 | 1 |
6 | Événement 6 | 2022-05-01 | 1 |
4 | Événement 4 | 2022-05-03 | 0 |