Получить строку, если столбец имеет значение, отличное от указанного в Oracle SQL - PullRequest
0 голосов
/ 28 августа 2018

У меня есть table_test. Я должен получить идентификатор, если один из столбцов имеет значение, отличное от заданного значения.

Table_test

   ID   COLS COLA
   AA    FI   YD
   AA    IN   YD
   AA    MH   YC
   AA    HI   YD

Если отличное от COLA имеет любое другое значение, кроме YD, я должен получить идентификатор. Каковы эффективные Oracle - SQL-запрос? Использование группы & Имея? или с более (разделить)?

1 Ответ

0 голосов
/ 28 августа 2018

Я бы пошел на group by и having. Один из методов:

select id
from t
group by id
having sum(case when cola <> 'YD' then 1 else 0 end) > 0;

Однако, другой подход может быть:

select distinct id
from t
where exists (select 1 from t t2 where t2.id = t.id and t2.cola <> 'YD');

Или:

select distinct id
from t
where cola <> 'YD;

Трудно сказать, какой из них будет самым быстрым. Если у вас есть отдельная таблица идентификаторов, то лучшим подходом будет:

select ids.id
from ids
where exists (select 1 from t t2 where t2.id = ids.id and t2.cola <> 'YD');

с индексом t(id, cola).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...