Есть ли способ объединить 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, кажется очень неустойчивым.