Как получить эти строки из таблицы "многие-многие", которая содержит 0 в точном столбце? - PullRequest
0 голосов
/ 29 мая 2020
a|a_id|b_id
1| 13 | 0
2| 14 | 0
3| 13 | 57
4| 13 | 0
5| 15 | 11
6| 15 | 0
7| 15 | 234
8| 14 | 0

Итак, я хочу вернуть только эти a_id, все строки в b_id равны 0. В этом случае это будет a_id = 14 .

a|a_id|b_id
1| 13 | 0
2| 14 | 0
3| 13 | 57
4| 13 | 0
5| 15 | 0
6| 15 | 0
7| 15 | 0
8| 14 | 0

Во втором случае это будет 14 и 15

То, что я пробовал:

select a_id
from id_table
group by a_id
having max(b_id) > 0

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы можете использовать агрегирование и фильтр с предложением having:

select a_id
from mytable
group by a_id
having max(b_id) = 0

Это предполагает отсутствие отрицательного значения в b_id. В противном случае вы могли бы сделать:

having max(b_id <> 0) = 0

0 голосов
/ 29 мая 2020

Если вам нужны полные строки, вы можете использовать not exists:

select t.*
from table t
where not exists (select 1 from table t1 where t1.a_id = t.a_id and t1.b_id <> 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...