【问题标题】:MySQL COUNT(*) GROUP BY HAVING COUNT=?MySQL COUNT(*) GROUP BY HAVING COUNT=?
【发布时间】:2012-07-01 04:07:49
【问题描述】:

这是我的查询

SELECT COUNT(*) as total, toys, date FROM T1
 WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
UNION
SELECT COUNT(*) as total, toys, date FROM T2
 WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
UNION
SELECT COUNT(*) as total, toys, date FROM T3
 WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
GROUP BY RoomType
HAVING COUNT( total ) = 4

输出结果

count   Toys            date
3   Bibi        2012-06-26
4   Baba            2012-06-26

如何让 MYSQL 仅显示 count=4 的结果

【问题讨论】:

    标签: mysql count group-by having-clause


    【解决方案1】:
    SELECT * FROM (
        SELECT COUNT(*) as total, toys, date FROM T1
         WHERE (date >= '2012-06-26' AND date < '2012-06-30') AND (Avail > '0')
         GROUP BY RoomType
        UNION
        SELECT COUNT(*) as total, toys, date FROM T2
         WHERE (date >= '2012-06-26' AND date < '2012-06-30') AND (Avail > '0')
         GROUP BY RoomType
        UNION
        SELECT COUNT(*) as total, toys, date FROM T3
         WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
        GROUP BY RoomType) AS src
    WHERE total = 4;
    

    请注意,对于正确的数据分组,您必须GROUP BY 子句中或作为聚合函数的参数包含所有列。这是 MySQL 的特性,可以让你避免这种限制,但它可能会导致你意想不到的结果。

    【讨论】:

      【解决方案2】:

      您需要先分组,然后合并结果。

      SELECT COUNT(*) as total, toys, date FROM T1
       WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
       GROUP BY RoomType HAVING COUNT( *) = 4
      UNION
      SELECT COUNT(*) as total, toys, date FROM T2
       WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
       GROUP BY RoomType HAVING COUNT( * ) = 4
      UNION
      SELECT COUNT(*) as total, toys, date FROM T3
       WHERE (date >= '2012-06-26'AND date < '2012-06-30') AND (Avail > '0')
       GROUP BY RoomType HAVING COUNT( * ) = 4
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-23
        • 2021-01-28
        • 1970-01-01
        • 2012-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多