先看SQL1 SELECT CUST_CD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.COMPANY_CD FROM MIT_EQUIP ME WHERE ME.COMPANY_CD = MC.CUST_CD ) 这里列出了MIT_CUST.CUST_CD和MIT_EQUIP.COMPANY_CD相等的CUST_CD值而按照你sql2的写法,如果sql1有数据的话,sql2可以写成这样 SELECT MC.CUST_CD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.SO_CD FROM MIT_EQUIP ME WHERE ME.SO_CD = MC.CUST_CD ) 下面的exists只是判断sql存在数据否,于前面语句并无关联。 所以这里列出了MIT_CUST.CUST_CD和MIT_EQUIP.SO_CD相等的CUST_CD值 可以看出2条sql查出的结果并无字段对应关系,应该是结果对应关系试试下面语句: select a.CUST_CD parent,b.CUST_CD child from (SELECT CUST_CD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.COMPANY_CD FROM MIT_EQUIP ME WHERE ME.COMPANY_CD = MC.CUST_CD ) a, (SELECT MC.CUST_CD,substr(MC.CUST_CD,1,2) PCD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.SO_CD FROM MIT_EQUIP ME WHERE ME.SO_CD = MC.CUST_CD) b where a.CUST_CD = b.PCD(+)
cust_cd (pk)表mit_equip(me)
equip_no(pk) 没用上
company_cd
so_cd
sf_c_cd
cust_cd
SELECT CUST_CD
FROM MIT_CUST MC
WHERE EXISTS( SELECT ME.COMPANY_CD
FROM MIT_EQUIP ME
WHERE ME.COMPANY_CD = MC.CUST_CD
)
这里列出了MIT_CUST.CUST_CD和MIT_EQUIP.COMPANY_CD相等的CUST_CD值而按照你sql2的写法,如果sql1有数据的话,sql2可以写成这样
SELECT MC.CUST_CD
FROM MIT_CUST MC
WHERE EXISTS( SELECT ME.SO_CD
FROM MIT_EQUIP ME
WHERE ME.SO_CD = MC.CUST_CD
)
下面的exists只是判断sql存在数据否,于前面语句并无关联。
所以这里列出了MIT_CUST.CUST_CD和MIT_EQUIP.SO_CD相等的CUST_CD值
可以看出2条sql查出的结果并无字段对应关系,应该是结果对应关系试试下面语句:
select a.CUST_CD parent,b.CUST_CD child from
(SELECT CUST_CD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.COMPANY_CD FROM MIT_EQUIP ME WHERE ME.COMPANY_CD = MC.CUST_CD ) a,
(SELECT MC.CUST_CD,substr(MC.CUST_CD,1,2) PCD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.SO_CD FROM MIT_EQUIP ME WHERE ME.SO_CD = MC.CUST_CD) b
where a.CUST_CD = b.PCD(+)
谢谢grace,谢谢大家
结贴