Maison > base de données > tutoriel mysql > Comment trier les lignes en fonction de plusieurs colonnes d'horodatage dans MySQL avec l'instruction CASE ?

Comment trier les lignes en fonction de plusieurs colonnes d'horodatage dans MySQL avec l'instruction CASE ?

Susan Sarandon
Libérer: 2024-11-15 09:59:02
original
650 Les gens l'ont consulté

How to Order Rows Based on Multiple Timestamp Columns in MySQL with CASE Statement?

MYSQL ORDER BY CASE Problème

Cette question pose un défi dans l'ordre des lignes en fonction de colonnes spécifiques en fonction d'une condition WHERE. Considérez la base de données fournie avec quatre lignes et colonnes d'horodatage. L'objectif est d'ordonner les lignes de telle sorte que les deux colonnes d'horodatage soient traitées comme un seul critère de classement.

La requête fournie trie initialement les horodatages en fonction des champs id_one et id_two séparément :

SELECT * FROM tablename 
WHERE id_one=27 OR id_two=27 
ORDER BY 
  CASE WHEN id_one=27 THEN timestamp_one END DESC, 
  CASE WHEN id_two=27 THEN timestamp_two END DESC
Copier après la connexion

Cette approche aboutit à une sortie où les lignes sont triées au sein de chaque groupe id_one ou id_two, mais pas sous la forme d'un ordre d'horodatage combiné.

Pour obtenir l'ordre souhaité, nous pouvons utiliser une requête légèrement modifiée :

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 requête révisée, timestamp_one et timestamp_two sont pris en compte pour le tri, quelle que soit la colonne d'ID qui correspond à la condition WHERE. L'instruction CASE sélectionne l'horodatage approprié en fonction des valeurs id_one et id_two.

Cette modification aboutit à la sortie souhaitée, où les lignes sont classées comme une seule colonne d'horodatage, en tenant compte à la fois de timestamp_one et timestamp_two :


| id_one | id_deux | horodatage_one | timestamp_two |

| 27 | 35 | 9h30 | NULL |

| 35 | 27 | NULL | 9h33 |

| 27 | 35 | 9h34 | NULL |

| 35 | 27 | NULL | 9h35 |

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