2012-01-30 18 views
9

Estoy intentando ejecutar esta consulta en orden ascendente:MySQL columna de orden asc

SELECT title,project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY title, project_index ASC; 

Necesito dos columnas en orden ascendente, pero devuelve la consulta por encima de los resultados con sólo una columna en ASC orden.

+8

que no entiendo su pregunta por completo. Pero puede especificar el orden de cada columna como 'ordenar por col1 asc, col2 asc, col3 desc' y así sucesivamente –

+0

intenté pero no funciona para mí ... mi consulta es title, project_index estas dos columnas que quiero mostrar asc orden pero solo una de las columnas tiene efecto .... – user1135693

+0

¿Cuál es su base de datos? –

Respuesta

3

Si está utilizando mysql, marque this.

como se dice allí, se puede utilizar SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

+0

gracias por la respuesta ..... pero todavía me enfrento a este problema intenté por encima de todo, pero aún ....... – user1135693

24

orden ascendente es la predeterminado para la mayoría (si no todos) DBMS de modo que su declaración es una especie de raro en ese sentido, pero sin embargo, se puede especificar un orden para cada columna individual al agregarle el especificador ASC o DESC.

Su declaración luego se convertiría en

SELECT title 
     , project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY 
     title ASC 
     , project_index ASC 

Editar

Como se ha mencionado en @Arvo & @Dems, actualmente está ordenando primera en title y para los títulos idénticos en project_index. Si quiere que su project_index se ordene primero, debe colocarlo primero en la cláusula ORDER BY.

Su declaración se convierte entonces en

SELECT title 
     , project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY 
     project_index ASC 
     , title ASC 

y debido ASC es el orden predeterminado, se puede omitir ellos alltogether

SELECT title 
     , project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY 
     project_index 
     , title 
+0

mi base de datos mysql – user1135693

+0

intenté la consulta anterior, pero project_index no tiene el efecto que muestra desc ... – user1135693

+0

@ user1135693 - ¿Puede publicar su consulta y resultados? O hay algo mal con la consulta o te has encontrado con un error. –

0

intenta ordenar las dos columnas en orden ascendente. En mysql, puede usar orden múltiple en una consulta. Pero la preferencia por el orden es muy importante aquí. El primero obtiene la mayor preferencia y el siguiente obtiene la segunda preferencia.
Eso significa, su consulta es

SELECT title,project_index FROM projectdetail 
    WHERE project_index BETWEEN 1 AND 6 ORDER BY title, project_index ASC; 

Cuando, por fin consiguió el título primera preferencia. El mysql ordenará la columna 'título' en orden ascendente al principio y mostrará el resultado. Entonces solo ordenará la columna 'project_index'. Por lo tanto, no puede obtener la respuesta que desee.

0

Prueba esto:

SELECT title, project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY project_index, title; 
-1

Usted puede probar con el siguiente y check--

SELECT title,project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY title, project_index 
-1

como por su exigencia/consulta creo que es imposible de hacer pedido de más de 2 columnas en la misma mesa Si desea hacer un pedido basado en el valor, puede hacer esto.

SELECT lat,lon, title, zip, city, state, region,cantone 
FROM company 
WHERE title != '' AND state IN(1,3,4,5,6,7,9,2) 
ORDER BY state=2,title asc 

En consulta anterior se mostrará el primer título en orden ascendente excepto estado = 2 y luego muestra todos los registros con estado = 2 en la última.

3

PEDIDO por el título ASC, project_index ASC;

SELECT title,project_index 
FROM projectdetail 
WHERE project_index BETWEEN 1 AND 6 
ORDER BY title ASC, project_index ASC; 

y se puede añadir más columnas como ORDER BY col1 ASC, col2 ASC, col3 DESC;

-2

Uso

ORDER BY title ASC,project_index ASC 

en lugar de

ORDER BY title, project_index ASC; 

dar la orden por separado para los dos entonces todo funcionará correctamente.

-2

Usted puede tratar de:

SELECT title, project_index FROM projectdetail 
ORDER BY title ASC, project_index DESC