SELECT COUNT(DISTINCT a.name)+COUNT(DISTINCT b.name) FROM t1 a,t2 b
作用是求t1中不同的name的数量+t2中不同的name的数量 
(即,若同一个name在两表中都出现,那么算2次)

解决方案 »

  1.   

    select sum(c) from
    (
        select c=COUNT(DISTINCT name) from t1
        union all 
        select c=COUNT(DISTINCT name) from t2
    ) T
      

  2.   

    SELECT COUNT(DISTINCT a.name)+COUNT(DISTINCT b.name) FROM t1 a,t2 b
    应该用了Gross join,性能未必好
      

  3.   


    ----------
    一楼才是楼主要的答案..
    或另一种答案计算两个表的合起来的不同记录
    select count(1) 
    from (
    select  Name from T1
    union all
    select Name from T2
    )TT
      

  4.   


    select count(1) 
    from (
    select  Name from T1
    union --去掉all
    select Name from T2
    )TT
      

  5.   

    上面的评论错了!
    union 与union all都是合并结果集,不过它们之间是有区别的,union会自动过滤重复的记录值,union all则不会过滤