Есть ли способ объединить ORDER BY
и IS NULL
в sql, чтобы я мог упорядочить по столбцу, если столбец не нулевой, а если он нулевой, упорядочить по другому столбцу?
Порядок по столбцу 1, если столбец1 не равен NULL, в противном случае порядок по столбцу2
Ответ 1
Что-то вроде:
ORDER BY CASE
WHEN Column1 IS NOT NULL THEN Column1
ELSE Column2
END
То же, что и написание:
ORDER BY COALESCE(Column1, Column2)
Оба должны работать в любой вменяемой СУБД.
Ответ 2
Попробуйте это
ORDER BY COALESCE(fieldA, fieldB);
Ответ 3
Вы можете попробовать следующее:
ORDER BY ISNULL(firstField, secondField)
Ответ 4
У меня нет таблиц atm, где я мог бы его протестировать, но это может сработать, по крайней мере, без использования данных:
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE 1
ORDER BY IF( table2.id, table1.id, table1.name )
Также я не знаю, как будет выглядеть порядок, если table2.id иногда имеет значение null, кажется очень неустойчивым.