2010-09-05 14 views
14

Benvenuto,"Ordina per desc" nell'ordine inverso?

Mi chiedo se sia possibile invertire i dati restituiti nell'ordinamento "ordine per desc", ma voglio quei dati in ordine inverso.

Per esempio, ho avuto tabella con valori

ID 
1 
2 
3 
4 

e lo faccio

Ordina per ID ASC LIMIT 3 Ho

1 
2 
3 

Quando faccio Ordina per limite di ID DESC 3 ottengo

4 
3 
2 

Vorrei avere

3 
2 
1 

quindi vorrei ordinare da ASC ma revers risultati. Ho sempre fatto questo in PHP usando array_reverse, ma oggi voglio chiederti. May May ho sbagliato e posso farlo solo in Mysql. saluti

+1

possibile duplicato di [B est modo di recuperare le ultime 4 righe da un set di risultati usando mysql] (http://stackoverflow.com/questions/2980220/best-way-to-fetch-last-4-rows-from-a-result-set-using -mysql) –

risposta

5

È possibile recuperare le prime tre righe utilizzando un subquery e poi invertire l'ordine di queste righe in una query esterna:

SELECT * 
FROM 
(
    SELECT * 
    FROM yourtable 
    ORDER BY ID 
    LIMIT 3 
) T1 
ORDER BY ID DESC 
0

Si potrebbe utilizzare un outer SELECT per invertire l'ordine:

SELECT * 
FROM (
    SELECT … 
    ORDER BY id ASC 
    LIMIT 3 
) sub 
ORDER BY id DESC 
25
SELECT * 
FROM (
    SELECT ... 
    FROM ... 
    ORDER BY ID ASC 
    LIMIT 3 
) AS sq 
ORDER BY ID DESC 

Pensate che funzioni in due fasi. Prima esegue la query interna: seleziona 3 record con ID minimo. Quindi nella query esterna li ordina in ordine decrescente.

+0

Questo è un ottimo lavoro. – marc

+0

Amico, sei fantastico! – user3284463

+0

Come funziona questa query! Puoi spiegare o fornire un collegamento a questo – user3284463

4

No, non ti sbagli. Non ci sono differenze per una quantità ragionevole di dati. Array_reverse va bene.
Non è una cosa di cui devi preoccuparti troppo. Basta usare quello che ti piace di più - per migliorare la leggibilità o altri motivi soggettivi

2

È possibile farlo con una query sub:

SELECT * FROM 
    (SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r 
ORDER BY r.idMyTable DESC 

risorse:

+0

Pagina di risorsa non trovata :( – user3284463