У меня есть один SQL, где я хочу заказать его в таком предложении, когда одно из предложений упорядочивания - NUll, тогда оно должно пропустить его и перейти к следующему предложению упорядочения
Как условие заказа может быть нулевым? Покажите, пожалуйста, пример. Вы имеете в виду, что значение равно NULL, как в order by col1, col2
, а в некоторых записях col1 имеет значение NULL? Но где же тогда их заказывать? Если вы имеете в виду это, то также покажите некоторые образцы данных и ожидаемый результат.
Еще одна вещь: задавая вопросы по SQL, вы должны (почти) всегда также отмечать запрашиваемую СУБД (MySQL, SQL Server, Oracle или ...), потому что диалекты SQL продуктов различаются.
вариант использования, когда для заказа
order by case when val is not null then yourdeseired
else val end asc
или вы можете использовать coalesce
order by COALESCE(col1, col2,999999) //here if both column is null then its order value will be 999999 otherwise it will order according to 1st non null column wise
@Nick, пожалуйста, скажите мне, где вы видели копию?
@Nick не могу я использовать ту же функцию, если мое объяснение другое объяснение человека ??? полностью не согласен с тем, что любой человек может использовать функцию, и я не смогу использовать эту функцию с объяснением
И вдруг кто-то вставляет значение 1000000, и заказ не работает ... "Безопасные" константы, используемые для обеспечения функциональности, немного небезопасны.
Я не думаю, что ваше объяснение так уж отличается. Но сейчас я сойду с лошади.
Используйте coalesce, чтобы перенести следующее предложение упорядочивания в текущий рассматриваемый порядок по столбцу:
SELECT * FROM table
ORDER BY firstcolumn, COALESCE(second_column_might_be_null, thirdcolumn), thirdcolumn
Добро пожаловать в SO. Некоторым людям может быть трудно понять, что вы имеете в виду, отвечая на подобные вопросы. В вопросах, связанных с SQL, почти ВСЕГДА лучше размещать «вот данные, которые у меня есть сейчас» и «вот как я хочу, чтобы они выглядели, когда мой запрос выполняется успешно, пара таблиц. Пожалуйста, не публикуйте скриншоты для данных. , на случай, если кто-то захочет протестировать с ним