奇怪这条sql为什么不能出现结果select familyName,givenName,addressLine1 from User m  where (m.familyName, m.givenName) in
(select b.familyName,b.givenName from User b
where 
 trim(ifnull(b.familyName,'')) <>'' and  trim(ifnull(b.givenName,'')) <>'' 
group by b.familyName,b.givenName having count(*)>=2) union 
select  familyName,givenName,addressLine1 from User m  where m.addressLine1 in
(select b.addressLine1 from User b 
where trim(ifnull(b.addressLine1,'')) <>''
group by b.addressLine1 having count(*)>=2) 单独2个sql(union前后)是可以的,
但放在一起为什么不可以?  死活没有结果

解决方案 »

  1.   

    最好能把前后两条sql的结果也给出来。
      

  2.   

    只要你两个结果集列数相同 没问题
    mysql> select * from t1;
    +---+------+
    | a | b    |
    +---+------+
    | 1 | A    |
    | 2 | B    |
    | 3 | C    |
    +---+------+
    3 rows in set (0.00 sec)mysql> select * from tb;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | wang' |
    +----+-------+
    1 row in set (0.00 sec)mysql> select * from t1
        -> union
        -> select * from tb;
    +---+-------+
    | a | b     |
    +---+-------+
    | 1 | A     |
    | 2 | B     |
    | 3 | C     |
    | 1 | wang' |
    +---+-------+
    4 rows in set (0.00 sec)
      

  3.   

    你确定2个子句单独执行有结果的吗?另外,注意用union进行结果合并时,会去掉重复值记录的,若不想去掉重复值记录,则用 union all
      

  4.   

    估计是等的时间过长吧。 按楼上的加上 union all 这样会快一些,UNION还会需要进行去重复记录,需要时间比较长。
      

  5.   

    单独每个sql绝对有结果
    就是不能union ,否则漫长等待, 15分钟 半小时过去
    还是不出结果这个user也不过3万的记录