Maison > base de données > tutoriel mysql > le corps du texte

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
203 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!

source:php.cn
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