2012-01-30 18 views
9

próbuję uruchomić tę kwerendę w kolejności rosnącej:MySQL stwardnienie kolumna asc zamówienie

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

muszę dwie kolumny w porządku rosnącym, ale powyższe zapytanie zwraca wyniki z tylko jedną kolumnę w ASC kolejności.

+8

Nie rozumiem pytanie całkowicie. Ale możesz określić kolejność dla każdej kolumny, np. 'Order by col1 asc, col2 asc, col3 desc' itd. –

+0

próbowałem, ale to nie działa dla mnie .. moje zapytanie to tytuł, project_index te dwie kolumny chcę wyświetlić asc ale tylko jedna kolumna zaczyna obowiązywać ... – user1135693

+0

Jaka jest twoja baza danych? –

Odpowiedz

3

Jeśli używasz mysql, sprawdź this na zewnątrz.

Jak mówią nie, można użyć SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

+0

dzięki za odpowiedź ..... ale nadal mam do czynienia z tymi problemami próbowałem przede wszystkim, ale nadal ....... – user1135693

24

Rosnąco jest domyślny dla większości (jeśli nie wszystkie) DBMS jest tak swoją wypowiedź jest rodzajem dziwne w tym zakresie, niemniej jednak, ty można określić zamówienie dla każdej kolumny, dodając do niego specyfikator ASC lub DESC.

Wyciągu wtedy stać

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

Edit

Jak zostało wspomniane przez @Arvo & @Dems obecnie jesteś sortowania pierwszy na title i dla tych samych tytułów na project_index. Jeśli chcesz najpierw posortować jako pierwszy, musisz najpierw umieścić go w klauzuli ORDER BY.

Twoja wypowiedź staje

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

i dlatego ASC jest domyślny porządek sortowania, można pominąć im alltogether

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

moja baza danych mysql – user1135693

+0

Próbowałem powyższej kwerendy, ale project_index nie biorąc tego efektu pokazano desc ... . – user1135693

+0

@ user1135693 - Czy możesz opublikować zapytanie i wyniki? Albo coś jest nie tak z zapytaniem, albo natknąłeś się na błąd. –

0

spróbować rozwiązać obie kolumny w porządku rosnącym. W mysql możesz użyć wielu zamówień w zapytaniu. Ale bardzo ważna jest tutaj preferencja dla tego zamówienia. Pierwszy ma pierwszeństwo, a drugi ma drugie preferencje.
Oznacza to, że Twoje zapytanie jest

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

Gdzie, porządek tytuł dostał pierwszą preferencję. MySQL będzie najpierw porządkował kolumnę "tytuł" w porządku rosnącym i wyświetlał wynik. Wtedy tylko zamawia kolumnę "project_index". Więc nie możesz uzyskać odpowiedzi, jak chcesz.

0

Spróbuj tego:

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

Można spróbować z dołu i check--

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

jak na swoje wymagania/zapytania myślę, że to jest niemożliwe do zrobienia zamawiania więcej niż 2 kolumny w tej samej tabeli. Jeśli chcesz zamówić w oparciu o wartość, możesz to zrobić w ten sposób.

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 

W powyższym zapytaniu będzie to pierwszy tytuł pokaż wszystko w porządku rosnącym, z wyjątkiem stanu = 2 i następnie pokazuje wszystkie rekordy z state = 2 w ostatnim.

3

ORDER BY tytuł ASC, project_index ASC;

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

i można dodać więcej kolumn jak ORDER BY col1 ASC, col2 ASC, col3 DESC;

-2

użytkowania

ORDER BY title ASC,project_index ASC 

zamiast

ORDER BY title, project_index ASC; 

wydać rozkaz oddzielnie dla obu to będzie działać prawidłowo.

-2

Można spróbować:

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