Подтвердить что ты не робот

Порядок по столбцу 1, если столбец1 не равен NULL, в противном случае порядок по столбцу2

Есть ли способ объединить ORDER BY и IS NULL в sql, чтобы я мог упорядочить по столбцу, если столбец не нулевой, а если он нулевой, упорядочить по другому столбцу?

4b9b3361

Ответ 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, кажется очень неустойчивым.