Недавно я столкнулся с вопросом, который был задан в интервью, в котором говорится, что:
У вас есть база данных mysql со студентами. Напишите строку запроса, чтобы выбрать все элементы учеников таблицы и упорядочить по двум полям один по возрастанию, а другой - по убыванию.
Пусть есть таблица "студенты", например:
В этом примере, если мы заказываем по счету в порядке убывания, тогда невозможно одновременно закачивать roll_no в порядке возрастания.
С точки зрения вопроса, может ли быть написан какой-либо запрос для получения желаемого результата. Или вопрос двусмысленный или неправильный или мой подход к пониманию вопроса неверен?
В вашем заказе вы попросили систему заказать по первому столбцу сначала, чтобы он заказал, тогда вы попросили его заказать второй столбец, чтобы он
→ Он должен сохранить порядок первого столбца.
→ Заказать второй столбец
Таким образом, упорядочение внутри группы означает, что если
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, тогда он будет заказывать
Во-первых, все учащиеся, согласно этим оценкам, спускаются
И тогда, если у двух или более учеников будет одинаковый балл, скажем 60, тогда в пределах этой группы ученики будут заказываться в соответствии с номером рулона по возрастанию
Надеюсь, это очистит ваши сомнения.
Когда вы используете предложение order by
, вы можете указать направление Asc
или desc
.
В вашем примере с вашими примерными данными нет точки заказа по результату, а затем roll_no, потому что в столбце счетчика нет дубликата.
Если в вашей реальной таблице есть оценка, которая появляется более одного раза, вы можете order by score desc, roll_no
.
(asc
- значение по умолчанию)
ORDER BY col1 ASC, col2 DESC
.