Maison > base de données > tutoriel mysql > Comment trier les lignes par horodatages hiérarchisés par des ID spécifiques à l'aide de l'instruction CASE dans MySQL ?

Comment trier les lignes par horodatages hiérarchisés par des ID spécifiques à l'aide de l'instruction CASE dans MySQL ?

Barbara Streisand
Libérer: 2024-11-23 06:00:18
original
308 Les gens l'ont consulté

How to Order Rows by Timestamps Prioritized by Specific IDs using CASE Statement in MySQL?

MYSQL ORDER BY CASE Problème : Combinaison d'horodatages pour la commande

Dans le scénario présenté, nous avons une table avec quatre lignes, où chaque ligne contient deux identifiants et deux horodatages. La tâche consiste à récupérer les quatre lignes et à les classer en fonction des horodatages d'une manière spécifique.

L'objectif est de donner la priorité à la colonne timestamp_one pour le classement lorsque id_one correspond à 27, et à la colonne timestamp_two lorsque id_two correspond à 27. Le résultat attendu est d'avoir les lignes ordonnées comme si les deux colonnes d'horodatage n'en formaient qu'une.

Pour y parvenir, nous pouvons modifiez l'instruction existante comme suit :

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
Copier après la connexion

Dans cette instruction mise à jour, nous donnons la priorité au classement par timestamp_one lorsque id_one est 27 et timestamp_two lorsque id_two est 27. L'instruction CASE garantit que la colonne d'horodatage correcte est utilisée pour chaque rangée.

La sortie résultante sera classée comme suit :

-------------------------------------------------------------------
|   id_one   |   id_two   |   timestamp_one   |   timestamp_two   |
-------------------------------------------------------------------
|     27     |     35     |        9:30       |        NULL       |
-------------------------------------------------------------------
|     35     |     27     |        NULL       |        9:33       |
-------------------------------------------------------------------
|     27     |     35     |        9:34       |        NULL       |
-------------------------------------------------------------------
|     35     |     27     |        NULL       |        9:35       |
-------------------------------------------------------------------
Copier après la connexion

Ceci répond à l'exigence de trier les lignes comme si les deux colonnes d'horodatage n'en formaient qu'une, en donnant la priorité à timestamp_one pour les lignes avec id_one de 27 et timestamp_two pour les lignes avec id_two de 27.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal