Tengo una tabla de enlace con rule_id
a sub_rule_id
como tal:
rule_id | sub_rule_id --------------------- 1 | 1 2 | 1 2 | 2 2 | 3 3 | 3 3 | 4
Quiero poder obtener todos los sub_rule_id
que están vinculados a una sola rule_is
por rule_id
. Entonces, si mi rule_id = 1
, entonces no esperaba filas. Y si rule_id = 2
, entonces debería obtener solo uno. Traté de jugar con distinct
y having
y no lo molestaría con una mala consulta. Estoy seguro de que hay una manera fácil y elegante de hacerlo.
Gracias por adelantado
Puede group by sub_rule_id
y establecer la condición en la cláusula de having
:
select sub_rule_id from tablename group by sub_rule_id having count(distinct rule_id) = 1
O con NOT EXISTS
si desea filas completas:
select t.* from tablename t where not exists ( select 1 from tablename where sub_rule_id = t.sub_rule_id and rule_id <> t.rule_id )