这是我想要运行的查询。
SELECT COUNT(tableA.ID)
FROM tableA
NATURAL JOIN tableB
NATURAL JOIN tableC
WHERE tableB.Time IS NULL
GROUP BY tableA.ID
HAVING COUNT(tableA.ID) < tableC.Quantity
此查询将完全正常运行而不需要 HAVING
子句,但是HAVING
子句有一个我无法选择的错误。
HAVING
子句的目的是我想返回小于数量阈值的ID's
(定义为tableC.Quantity
)。
如何修复当前的HAVING
子句以合并查询只返回小于ID's
的{{1}}。
注意:如果您需要更多说明,我可以提供更多信息。
答案 0 :(得分:2)
我将假设错误是tableC.quantity
不在group by
子句中(并且您没有使用MySQL)的效果。如果是这样,您可以使用聚合函数来解决此问题:
SELECT COUNT(tableA.ID)
FROM tableA NATURAL JOIN
tableB NATURAL JOIN
tableC
WHERE tableB.Time IS NULL
GROUP BY tableA.ID
HAVING COUNT(tableA.ID) < max(tableC.Quantity);
顺便说一句,我认为natural join
是一项危险的行动。您可以向表中添加新列并使所有查询无效,而不会显示错误消息以告诉您出现了什么问题。