表A  字段 a1,a2,a3
表B 字段b1,b2,b3.
如果B中存在b1重复的记录,
则选出两个表A,B,inner JOIN ON a2=b2的数据;
否则选出两个A,B,inner JOIN ON a3=b3的数据。

解决方案 »

  1.   

    if exists (select b1 from b group by b1 having count(1)>1)
        select * from a inner join b on a.a2=b.b2
    else
        select * from a inner join b on a.a3=b.b3
    从搂主描述出发,没明白为什么这样查
      

  2.   

    select * from A inner join B on A.a2=B.b2 
      where B.b1 in(select b1 from B group by b1 having count(*)>1)
    union all
    select * from A inner join B on A.a2=B.b2 
      where B.b1 in(select b1 from B group by b1 having count(*)=1)
      

  3.   


    --修改
    select * from A inner join B on A.a2=B.b2 
      where B.b1 in(select b1 from B group by b1 having count(*)>1)
    union all
    select * from A inner join B on A.a3=B.b3 
      where B.b1 in(select b1 from B group by b1 having count(*)=1)