it-swarm.com.ru

MySQL множественный столбец asc заказ

Я пытаюсь выполнить этот запрос в порядке возрастания:

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

Мне нужны два столбца в порядке возрастания, но приведенный выше запрос возвращает результаты только с одним столбцом в порядке ASC.

11
user1135693

Порядок возрастания является заданным по умолчанию для большинства СУБД (если не для всех), поэтому в этом отношении ваше утверждение является своего рода странным, но, тем не менее, вы можете указать порядок для каждого отдельного столбца, добавив спецификатор ASC или DESC к нему.

Ваше заявление тогда станет

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

Правка

Как уже упоминалось @Arvo & @Dems, в настоящее время вы сортируете first на title и для идентичных заголовков на project_index. Если вы хотите, чтобы ваш project_index был отсортирован первым, вы должны сначала поместить его в предложение ORDER BY.

Ваше утверждение тогда становится

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

и поскольку ASC является порядком сортировки по умолчанию, вы можете полностью их опустить

SELECT  title
        , project_index 
FROM    projectdetail 
WHERE   project_index BETWEEN 1 AND 6 
ORDER BY 
        project_index
        , title
26
Lieven Keersmaekers

Если вы используете mysql, проверьте this out.

Как там говорится, вы можете использовать SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;

4
Ivaylo Petrov

ЗАКАЗАТЬ по названию ASC, project_index ASC;

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

И вы можете добавить больше столбцов, таких как ORDER BY col1 ASC, col2 ASC, col3 DESC;

3
IRSHAD

Попробуй это: 

SELECT title, project_index 
FROM projectdetail  
WHERE project_index BETWEEN 1 AND 6 
ORDER BY project_index, title;
0
Saharsh Shah

Вы пытаетесь отсортировать оба столбца в порядке возрастания. В MySQL вы можете использовать множественный порядок в запросе. Но предпочтение в заказе очень важно здесь. Первый получает наибольшее предпочтение, а следующий получает второе предпочтение.
Это означает, что ваш запрос 

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

Где, порядок по названию получил первое предпочтение. MySQL сначала упорядочит столбец title в порядке возрастания и отобразит результат. Только тогда он будет заказывать столбец project_index. Таким образом, вы не можете получить ответ, как хотите.

0
php