В запросе MySQL как бы я выбираю:MySQL ORDER BY смещение
- все строки, упорядоченные по колонке
name
- тех, кто
name > 'f'
должен прийти, а затем остальные в алфавитном порядке
так Я бы получил G, H, …, X, Y, Z, A, B, C …, F
.
В запросе MySQL как бы я выбираю:MySQL ORDER BY смещение
name
name > 'f'
должен прийти, а затем остальные в алфавитном порядкетак Я бы получил G, H, …, X, Y, Z, A, B, C …, F
.
SELECT
*
FROM
mytable
ORDER BY
CASE WHEN name > 'F' THEN 0 ELSE 1 END,
name
Интересно ... Я не знал, что вы можете заказать функцию, которая не была столбцом результатов запроса. Я собирался с выбрать IF (name> = 'F', 0, 1) как PreSort и использовать THAT в качестве предложения OrderBy – DRapp
Спасибо :) очень интересное решение –
@ monk.e.boy: В MySQL результаты сравнения '0' и' 1'. Это означает, что вы * можете * избавиться от 'CASE' и сделать' ORDER BY name <'G', name', но я считаю, что это гораздо менее интуитивно (и несовместимо с другими диалектами SQL). – Tomalak
Может быть, я что-то не хватает, но это
SELECT * FROM mytable WHERE name > 'F' ORDER BY name
вы не получите все строки с этим. Мне нужны имена, начинающиеся с буквы A, следующего за Zs –
А! Так что я * сделал * на самом деле пропустить что-то ... –
Вы можете сделать вид с 2 выбора запросов Query
SELECT * FROM mytable WHERE name > 'F' ORDER BY name
и
SELECT * FROM mytable WHERE name < 'F' ORDER BY name
и объединить результаты
Маленькая ошибка: <= not <. Должно быть более простое решение с помощью UNION –
Я думаю, что он хочет, чтобы ответ, как
SELECT * FROM mytable WHERE name > 'F' ORDER BY SUBSTR (name, 1, 1) + 'G'
Я не могу заставить это работать Я получаю «FUNCTION anonymous_databse.SUBSTR» не существует ' –
Извините - я просто сделал ленивый ввод, и это было предназначено как указатель на то, как вы можете это сделать. Я должен был сказать для Oracle, используйте ORDER BY ASCII ('G') + ASCII (SUBSTR (имя, 1,1)) – MJB
Использование MySQL, вы можете использовать этот сокращенный код:
SELECT * FROM tbl ORDER BY name > 'F' DESC, name
G, H, I ... больше, чем F, так что выше условия приведут к истинным, истинным сортировкам последним, ложным сортировкам сначала, поэтому просто поместите DESC
Спасибо, это работает –
Это домашнее задание? –
нет - я 35 с детьми;) –