Как вернуть NULL, если запрос не выдаст ответа

Имею таблицу

ID, SALARY
1   100
2   200
3   300

Нужно найти второе по величине значение salary, если ничего не найдено, то вывести NULL. Второе значение я нашел вот так

SELECT Salary
FROM Employee
ORDER BY salary
LIMIT 1,1;

А как вывести NULL, если допустим таблица пуста я не понимаю


Ответы (2 шт):

Автор решения: Akina
SELECT COALESCE((SELECT Salary
                 FROM Employee
                 ORDER BY salary
                 LIMIT 1,1)) SALARY;

PS. COALESCE() в принципе нужен, чтобы вместо NULL вывести вменяемое значение (скажем, "нет данных"). Если устраивает NULL, то достаточно SELECT (SELECT ...).

→ Ссылка
Автор решения: Kallen 14

Лучше через условие через ofset и colaps если будет 2 одинаковых значения вернет одно из них запрос все равно выполняется снизу вверх т. е сначала сравним все зп с максимальной а потом из этого сравнения выберем максимальное т.е второе по списку

SELECT MAX(Salary) as SecondHighestSalary
FROM Employee
WHERE salary < (SELECT MAX(salary) FROM Employee);
→ Ссылка