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 )