2010-09-26 6 views
7

MySQL:php + mysql, l'ordine in base al nome + a partire da id specifico

id | name | 
------------ 
1 | Joe | 
2 | Craig | 
3 | Shawn | 
4 | Ryan | 
5 | Seth | 

PHP:

$a = mysql_query("SELECT * FROM table_name ORDER BY name DESC"); 

quello che voglio fare è però, voglio iniziare a id: 3, quindi dovrebbe uscita:

3,4,5,1,2

+0

In che modo stai "ordinando per nome" come nel tuo titolo? Sembra che tu voglia ordinare per ID. –

risposta

6

EDIT: Mark è corretto. La query precedente era sintatticamente errata. L'uso di aliasés fittizi dovrebbe funzionare!

Select id from 
(
    SELECT id FROM table_name 
    WHERE id >= 3 
    ORDER BY id ASC 
) X 

UNION 

Select * from 
(
    SELECT id FROM table_name 
    WHERE id < 3 
    ORDER BY id ASC 
) Y 

Questo dovrebbe dare 3,4,5,1,2

12

È possibile utilizzare un'espressione nella ORDER BY:

SELECT id, name 
FROM table_name 
ORDER BY id < 3, id 

Risultato:

 
3 Shawn 
4 Ryan 
5 Seth 
1 Joe 
2 Craig 

Ti consiglio inoltre di non utilizzare SELECT * e di elencare esplicitamente le colonne.

+2

+1 - Questo è un modo molto più pulito di ottenere la stessa cosa !! :-) – InSane

Problemi correlati