这是我的查询
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 的结果
最佳答案
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 的特性可以让你避免这个限制,但它可能会导致你意想不到的结果。
关于MySQL COUNT(*) GROUP BY HAVING COUNT=?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279495/