Как вернуть 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);