a:SELECT * FROM `qq` WHERE qq not in(SELECT qq
FROM qq_log
HAVING count( qq ) <3)
b: SELECT qq FROM qq_log HAVING count( qq ) <3当b没有记录的时候,a也没记录,如何解决这个问题?

解决方案 »

  1.   

    当b没有记录时,a变成了SELECT * FROM `qq` WHERE qq not in(null);这样肯定没记录了,除非 qq包含NULL值。
      

  2.   

    mysql> select ID ,date from Table_S;
    +----+---------------------+
    | ID | date                |
    +----+---------------------+
    |  1 | 2011-10-24 00:00:00 |
    |  2 | 2011-10-25 00:00:00 |
    |  3 | 2011-10-26 00:00:00 |
    |  4 | 2011-10-27 00:00:00 |
    |  5 | 2011-10-28 00:00:00 |
    |  6 | 2011-10-29 00:00:00 |
    |  7 | 2011-10-30 00:00:00 |
    |  8 | 2011-10-31 00:00:00 |
    +----+---------------------+
    8 rows in set (0.00 sec)
    mysql> select ID ,date from Table_S having count(ID)<3;
    Empty set (0.00 sec)mysql> select ID ,date from Table_S where ID not in(select ID from Table_S having count(ID)<3);
    +----+---------------------+
    | ID | date                |
    +----+---------------------+
    |  1 | 2011-10-24 00:00:00 |
    |  2 | 2011-10-25 00:00:00 |
    |  3 | 2011-10-26 00:00:00 |
    |  4 | 2011-10-27 00:00:00 |
    |  5 | 2011-10-28 00:00:00 |
    |  6 | 2011-10-29 00:00:00 |
    |  7 | 2011-10-30 00:00:00 |
    |  8 | 2011-10-31 00:00:00 |
    +----+---------------------+
    8 rows in set (0.00 sec)