C'est une tâche simplifiée que je dois résoudre en projet réel. Dans ce projet, les données sont stockées dans HSQLDB. Les données sont accédées en utilisant JDBC.Comment combiner deux ensembles de résultats d'une table triés indépendamment en utilisant une requête SQL?
J'ai une table:
name | flag
-----------
aa | 1
bb | 0
cc | 1
dd | 0
ee | 1
ff | 0
je dois composer requête pour obtenir le tableau suivant:
name | flag
-----------
aa | 1
cc | 1
ee | 1
ff | 0
dd | 0
bb | 0
La table finale est comme les lignes avec le drapeau = 1 ont été prises et triés croissant, les lignes avec flag = 0 ont été prises et triées en descendant et les résultats ont été combinés les uns après les autres.
S'il vous plaît, faites attention, que les rangées avec flag = 1 et les rangées avec flag = 0 ont opposé ordre de tri.
Est-il possible de faire en SQL? Je ne voudrais pas faire deux requêtes et fusionner les ResultSets en code Java manuellement.
Merci, votre solution fonctionne dans HSQLDB. Mais pourriez-vous expliquer comment fonctionne le tri dans la base de données? Le moteur sélectionne les lignes, puis applique deux types d'expressions d'ordre soit: "flag desc, name, '' desc" (si flag = 1) ou ceci: "flag desc, '', name desc" (si flag = 0)? Je n'ai jamais rencontré d'expression dynamique "ordre par" avant. – ilya
Il trie sur 3 colonnes, mais la colonne 2 ou la colonne 3 est une constante donc est effectivement ignoré – gbn