我的查询
select kc.prod_id, kc.prod_actv_ts
from kit_cmpnt kc ,kit_cmpnt_stock kcs, prod p
where kc.cmpnt_cd='016'
and kcs.kit_cmpnt_nbr= kc.kit_cmpnt_nbr
and kcs.stock_id=1
and kcs.prod_id=kc.prod_id
and kcs.prod_actv_ts=kc.prod_actv_ts
and p.prod_id= kc.prod_id
and p.prod_actv_ts= kc.prod_actv_ts
and p.prod_inactv_ts is null;
我想获得kc.prod_id,kc.prod_actv_ts的独特组合
like distinct(kc.prod_id,kc.prod_actv_ts)
但我得到的是重复的prod_id和prod_actv_ts
的组合请帮助
答案 0 :(得分:2)
我按如下方式重构查询:
select kc.prod_id, kc.prod_actv_ts
from kit_cmpnt kc
where kc.cmpnt_cd='016'
and exists
(select 1 from kit_cmpnt_stock kcs
where kcs.stock_id=1
and kcs.kit_cmpnt_nbr= kc.kit_cmpnt_nbr
and kcs.prod_id=kc.prod_id
and kcs.prod_actv_ts=kc.prod_actv_ts)
and exists
(select 1 from prod p
where p.prod_id= kc.prod_id
and p.prod_actv_ts= kc.prod_actv_ts
and p.prod_inactv_ts is null);
一般原则是你不应该在FROM子句中有一些东西,除非你从中获取一些东西。如果您没有从中获取任何内容,则它是一个过滤器,并且应该作为子查询在WHERE子句中。
答案 1 :(得分:0)
尝试使用select *
查找重复项的原因。
答案 2 :(得分:0)
使用distinct来过滤独特的组合...... 例如.. 从表中选择distinct(a,b,c) 哪里 一些条件