2017-05-31 3 views
-2

Mes données ressemble à ceci:Je veux construire une requête en utilisant la clause orderby. S'il vous plaît conseiller

App ID Ref Id App Type Reg Date 
1  1  Main  2017-05-13 
2  2  Sub  2017-05-14 
3  1  Sub  2017-05-16 
4  2  Main  2017-05-15 
5  3  Main  2017-05-14 
6  1  sub  2017-05-17 

Je voudrais changer ce tableau comme indiqué ci-dessous.

App ID Ref Id App Type Reg Date 
4  2  Main  2017-05-15 
2  2  Sub  2017-05-14 
5  3  Main  2017-05-14 
1  1  Main  2017-05-13 
6  1  sub  2017-05-17 
3  1  Sub  2017-05-16 

Le contenu avec le même ID ref est affiché et le contenu avec le principal est positionné en haut. Le contenu enregistré le plus récemment doit figurer en haut de la page. Autrement dit, je veux créer une hiérarchie.

Select * 
from table 
order by refId desc, App Type asc, Reg Date desc 

Dois-je configurer la requête comme ci-dessus?

+2

"l'ordre" n'est pas clair: aucune des colonnes est ni ascendant ni descendant. – alfasin

+0

Sélectionnez * du tableau par ordre décroissant, Réf_ID, Type d'application asc, Reg Date desc – uSeruSher

+0

@uSeruSher Dites-vous que Ref_ID et Type d'application sont triés par asc? –

Répondre

0

testé:

SELECT * 
FROM t 
JOIN (SELECT `Ref Id`, MAX(`Reg Date`) AS maxdate FROM t WHERE `App Type` = 'Main' GROUP BY 1) md USING(`Ref Id`) 
ORDER BY maxdate DESC, `Ref Id`, (`App Type` = 'Main') DESC; 

+--------+--------+----------+------------+------------+ 
| Ref Id | App ID | App Type | Reg Date | maxdate | 
+--------+--------+----------+------------+------------+ 
|  2 |  4 | Main  | 2017-05-15 | 2017-05-15 | 
|  2 |  2 | Sub  | 2017-05-14 | 2017-05-15 | 
|  3 |  5 | Main  | 2017-05-14 | 2017-05-14 | 
|  1 |  1 | Main  | 2017-05-13 | 2017-05-13 | 
|  1 |  6 | sub  | 2017-05-17 | 2017-05-13 | 
|  1 |  3 | Sub  | 2017-05-16 | 2017-05-13 | 
+--------+--------+----------+------------+------------+ 
0

Je pense que vous voulez:

select t.* 
from t 
order by (select max(t2.regdate) from t t2 where t2.refid = t.refid) desc, 
     t.refid, 
     (t.apptype = 'Main') desc, 
     t.regdate desc;