Получение строки, если количество запросов на выборку равно одному - PullRequest
0 голосов
/ 16 июня 2020

Мы пытались получить значения, если запрос на выборку возвращает только одну строку. Ниже приведено проверенное решение, но я хотел проверить, есть ли оптимизированное решение с case logi c.

Пробный запрос:

select * from employees
WHERE  department_id = 204
AND class_id = 162
AND (select count(1)
    from employees
    WHERE department_id = 204
    and class_id = 162
    HAVING count(employee_id) = 1) = 1

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете использовать аналитическую функцию следующим образом:

select * from
(select t.*, count(1) over () as cnt from employees t
WHERE  department_id = 204
and class_id = 162)
where cnt = 1
1 голос
/ 16 июня 2020

Использовать оконную функцию:

select e.*
from (select e.*, count(*) as cnt
      from employees e
      where department_id = 204 and class_id = 162
     ) e
where cnt = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...