2010-09-26 8 views
7

MySQL:php + mysql, ordenado por nombre + a partir de Identificación específica

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

PHP:

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

lo que quiero hacer sin embargo es, quiero empezar a id: 3, por lo que debe ser la salida:

3,4,5,1,2

+0

¿De qué manera estás "ordenando por nombre" como en tu título? Parece que quieres ordenar por identificación. –

Respuesta

6

EDIT: Mark es correcta. La consulta anterior fue sintácticamente incorrecta. ¡El uso de alias dummy debería funcionar!

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 

Esto debería dar 3,4,5,1,2

12

Se puede utilizar una expresión en el ORDER BY:

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

Resultado:

 
3 Shawn 
4 Ryan 
5 Seth 
1 Joe 
2 Craig 

También le aconsejo que no use SELECT * y en su lugar, enumere las columnas explícitamente.

+2

+1 - ¡Esta es una forma mucho más limpia de lograr lo mismo! :-) – InSane

Cuestiones relacionadas