SQL Case Когда оператор для подсчета строк в нескольких таблицах - PullRequest
3 голосов
/ 19 июня 2019

Я пытаюсь написать запрос, который проверяет, были ли заполнены несколько таблиц, поэтому я должен проверить несколько таблиц, в случае, если только одна из них имеет 0 записей, тогда я должен вернуть «Нет» в выводе, в противном случае, есливсе эти таблицы имеют более 0 (то есть 1,2,3 ... записей), он должен возвращать «ДА».

Я уже пытался использовать:

SELECT
    CASE WHEN (SELECT COUNT(*) FROM LorikSkema.TABLE1)  > 0 THEN 'YES'
    ELSE 'NO'
    END FROM DUAL;

Это кажетсяработать только для одной таблицы, но у меня возникают проблемы с поиском подходящего запроса для нескольких таблиц на основе этой логики.

1 Ответ

4 голосов
/ 19 июня 2019

Вы можете использовать AND, чтобы добавить проверки для других таблиц. Но я думаю, что использование EXISTS может быть быстрее, чем count(*).

SELECT CASE
         WHEN EXISTS (SELECT *
                             FROM table1)
              AND EXISTS (SELECT *
                                 FROM table2)
              ...
              AND EXISTS (SELECT *
                                 FROM tablen) THEN
           'YES'
         ELSE
           'NO'
       END
       FROM dual;
...