无法使用" HAVING" " OR" " WHERE"一起

时间:2015-08-19 17:18:43

标签: mysql

如果最后一个时间戳超过2天有200个孩子,我想编写一个选择行的查询。我正在尝试将WHEREHAVING合并,如下所示:

...
WHERE parent.TIMESTAMP < DATE_SUB(CURRENT_DATE, INTERVAL 2 DAY_HOUR)
OR HAVING COUNT(parentID) > 199
GROUP BY parent.tID
ORDER BY parent.lastChildID DESC
LIMIT 200

但它给我一个语法错误。

如何在这两个条件之间使用OR?

2 个答案:

答案 0 :(得分:2)

HAVING子句追溯WHERE。它基本上是WHERE GROUP BY条款。

答案 1 :(得分:1)

由于HAVING适用于聚合,WHERE适用于行集,因此您无法将其混合。相反,使用子查询将HAVING转换为计数的WHERE条件:

SELECT ...
FROM parent
WHERE parent.TIMESTAMP < DATE_SUB(CURRENT_DATE, INTERVAL 2 DAY_HOUR)
OR (SELECT COUNT(*) FROM mytable WHERE tID = parent.tID) > 199
ORDER BY parent.lastChildID DESC
LIMIT 200