LINUX.ORG.RU

нужен запрос ORDER BY с NULLS LAST

 


0

1

Есть запрос для PGSQL, нужно сделать аналогичный в SQLite

SELECT name, salary
FROM docs
ORDER BY name NULLS LAST ASC, salary NULL FIRST DESC

в SQLite версии 3.28 нет команды NULLS LAST\FIRST как реализовать для этой версии такой запрос

Пробовал так

SELECT name, salary
FROM docs
ORDER BY name IS NULL ASC, salary IS NOT NULL DESC

в таком случаем NULL значения действительно либо в начале, либо в конце, но сортировка по полям name и salary пропадает (они будут в рандомном порядке).

Аналогично не работает ORDER BY с CASE

как-нить:

ORDER BY COALESCE( name, ‘_________’ ) - null first

ORDER BY COALESCE( name, ‘zzzzzzzzz’ ) - null last

https://www.sqlitetutorial.net/sqlite-functions/sqlite-coalesce/

ps Да и case должно работать

ORDER BY CASE WHEN NAME IS NULL THEN 1 ELSE 0 END, NAME - null first

ORDER BY CASE WHEN NAME IS NULL THEN 0 ELSE 1 END, NAME - null last

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 2)

ORDER BY -salary ASC

X512 ★★★★★
()

Пробовал так

но сортировка по полям name и salary пропадает

В сортировку надо добавить еще и сами значения полей

SELECT name, salary
FROM docs
ORDER BY name IS NULL, name, salary IS NOT NULL, salary DESC
No
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.