Можно ли упорядочить по двум полям в данной таблице, одно по возрастанию, а другое по убыванию одновременно? - PullRequest
0 голосов
/ 28 июня 2018

Недавно я столкнулся с вопросом, который был задан в интервью, в котором говорится:

У вас есть база данных mysql с таблицей студентов. Напишите строку запроса в выбрать все элементы таблицы учеников и упорядочить по двум полям одно восходящий и другой нисходящий.

Давайте создадим таблицу «студенты», например:

enter image description here

Из этого примера, если мы упорядочим по Оценка в порядке убывания, то нет способа упорядочить по roll_no в порядке возрастания заказывать одновременно.

С точки зрения вопроса, может ли быть написан какой-либо запрос для получения желаемого результата? Или вопрос двусмысленный или неправильный, или мой подход к пониманию вопроса неверен?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

В вашем заказе вы попросили систему сначала заказать по первому столбцу, чтобы он заказал, затем вы попросили его заказать по второму столбцу, чтобы он имел

-> Должен быть порядок первого столбца.

-> Заказ по второму столбцу

То есть порядок внутри группы означает, если

Table Test 
 A| B
 --------
  1  1
  1  3
  1  2
  2  2 
  2  4


Select * from test order by A desc, B asc 
Output 
Table Test 
 A| B
 --------
 2  2 
 2  4
 1  1
 1  2
 1  3

Так что в вашем случае, если вы сначала упорядочите по счету desc, тогда он прикажет

  1. Во-первых, все ученики в соответствии с их оценками по убыванию

  2. И затем, если два или более учеников имеют одинаковый балл, скажем, 60, то в этой группе ученики будут упорядочены по возрастанию числа бросков

Надеюсь, это очистит ваше сомнение.

0 голосов
/ 28 июня 2018

Когда вы используете предложение order by, вы можете указать направление Asc или desc.

В вашем примере с вашими примерами данных нет точки упорядочения по баллам, а затем по roll_no, поскольку в столбце баллов нет дубликатов.

Если в вашей реальной таблице есть результаты, которые появлялись более одного раза, вы можете order by score desc, roll_no.
(asc является значением по умолчанию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...