我正在使用以下查询来比较两个表中的值。 SUM(u.val)是总付款的值,我想将该值与发票的值(r.p_val)进行比较,并仅列出od SUM值较低的值。
SELECT u.nmb, SUM(u.val) AS total_val,r.p_val
FROM inv u
INNER JOIN bills r ON r.nmb = u.nmb
WHERE total_val < r.p_val
GROUP BY u.nmb
通过此查询,我得到错误“'where子句'中的未知列'total_val'”
我只设法通过查询来比较单个值而不是总付款的结果。该查询如下所示:
SELECT u.nmb, u.val, SUM(u.val) AS total_val,r.p_val
FROM inv u
INNER JOIN bills r ON r.nmb = u.nmb
WHERE u.val < r.p_val
GROUP BY u.nmb
有没有办法做一些类似的查询并获得所需的结果?
感谢您的任何建议。
最佳答案
将WHERE更改为HAVING。 WHERE无权访问选择列表中定义的列,也无权访问GROUP BY聚合:
SELECT u.nmb, SUM(u.val) AS total_val,r.p_val
FROM inv u
INNER JOIN bills r ON r.nmb = u.nmb
GROUP BY u.nmb
HAVING SUM(u.val) < r.p_val