Как использовать код SQL для выбора последнего идентификатора, который не в порядке (хотя я его отсортировал)

#mysql #sql #dom #select #xampp

#mysql #sql #dom #выберите #xampp

Вопрос:

Итак, это изображение, которое показывает мой идентификатор, который в порядке, если мы предполагаем, что S2 больше S10. Порядок моего идентификатора — S1, S10, S11, S12, S2, S3, S4, S5, S6, S7, S8, S9

Я написал свой SQL-код следующим образом, и последний возвращаемый идентификатор — S9, просто имейте в виду, что я хочу, чтобы рядом с номером был алфавит. Итак, какой код SQL позволяет мне выбрать последний идентификатор, который равен S12? Пожалуйста, помогите мне.

 SELECT IdSoalan FROM SOALAN ORDER BY IdSoalan DESC LIMIT 1
 

Комментарии:

1. Должен существовать столбец, в котором описывается, какой идентификатор идет первым или последним. Сами таблицы SQL не имеют понятия «порядок».

Ответ №1:

Причина order by , по которой это происходит, заключается в том, что ваши IdSoalan данные являются буквенно-цифровыми. Вы не должны использовать этот тип данных как обычный ID , но попробуйте это :

 ORDER BY LENGTH(IdSoalan), IdSoalan
 

это должно сделать ваш порядок данных таким :
S1 — S9 затем S10 — S12 и продолжайте.
для нисходящей формы просто укажите desc оба.

 ORDER BY LENGTH(IdSoalan) DESC, IdSoalan DESC
 

Комментарии:

1. используйте тот же запрос, который вы получили, и просто измените order by предложение.

2. я пытаюсь добавить ОГРАНИЧЕНИЕ DESC 1 в конце вашего кода, но все равно возвращаю S9

3. SELECT IdSoalan FROM SOALAN ORDER BY LENGTH(IdSoalan) DESC, IdSoalan DESC LIMIT 1

4. убедитесь, что у вас есть оба desc

5. @SzeYuSim для меня это своего рода bruh, потому что эти два ответа точно такие же, но я рад, что в любом случае решаю это.

Ответ №2:

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

 SELECT IdSoalan FROM SOALAN ORDER BY LENGTH(IdSoalan) DESC, IdSoalan DESC LIMIT 1
 

Он сортирует по длине столбца в порядке убывания, а затем по значению в порядке убывания и ограничивает результат 1. В MySQL это называется естественной сортировкой.