如果最后一个时间戳超过2天或有200个孩子,我想编写一个选择行的查询。我正在尝试将WHERE
与HAVING
合并,如下所示:
...
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?
答案 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