Найти идентификаторы, которые имеют статус только 0 - PullRequest
0 голосов
/ 07 сентября 2018

Мне нужен запрос, который возвращает все rg_id, которые имеют статус только 0. В качестве примера, rg_id 7 & 23 имеют статус 0 & 1, поэтому я не хочу, чтобы они были включены в результат.

enter image description here

Ответы [ 5 ]

0 голосов
/ 07 сентября 2018

Используйте Минус, если вы хотите только 0 (не идентификаторы имеют 0 и 1)

выберите идентификатор из таблицы 1, где статус = 0 Минус выберите идентификатор из таблицы 1, где статус = 1

0 голосов
/ 07 сентября 2018

вы можете убедиться, что все значения status в каждой группе не имеют других значений, кроме 0, используя having с sum:

select `rg_id` 
from `tbl`
group by `rg_id`
having sum(`status` <> 0) = 0
0 голосов
/ 07 сентября 2018

Попробуйте с группой по:

select id, sum(status)
from tablename
group by id
having sum(status)=0
0 голосов
/ 07 сентября 2018

не используется с условной агрегацией

select * from t where
 rg_id not in(   select rg_id 
                  from t 
                  where status in (0,1)
                  group by rg_id
                 having count(distinct status)=2 
                    )
0 голосов
/ 07 сентября 2018

Я бы использовал not exists, если у вас есть только статус 0 & 1:

select t.*
from table t
where t.status = 0 and
      not exists (select 1 from table t1 where t1.rg_id = t.rg_id and t1.status = 1);

Другой вариант - использовать group by предложение:

select rg_id
from table t
group by rg_id
having min(status) = max(status) and min(status) = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...