MySQL-在where子句中引用聚合列
这看起来很简单,但如果不执行子查询(这似乎会显著降低查询速度,而不是您希望MySQL-在where子句中引用聚合列,mysql,sql,max,aggregate,Mysql,Sql,Max,Aggregate,这看起来很简单,但如果不执行子查询(这似乎会显著降低查询速度,而不是您希望具有子句),我似乎无法解决这个问题 一般规则:where在聚合前的日期进行操作,having在聚合后对数据进行操作。更具体地说:where子句中的谓词在访问行时进行评估;having子句中的谓词在结果集准备好后进行评估,几乎在执行计划(就在处理ORDER BY和LIMIT子句之前)。因此HAVING子句中的谓词可以引用聚合,以及WHERE子句中无法访问的表达式和列别名。+1正好是我搜索的标题。 SELECT d.docum
具有
子句),我似乎无法解决这个问题
一般规则:
where
在聚合前的日期进行操作,having
在聚合后对数据进行操作。更具体地说:where
子句中的谓词在访问行时进行评估;having
子句中的谓词在结果集准备好后进行评估,几乎在执行计划(就在处理ORDER BY和LIMIT子句之前)。因此HAVING子句中的谓词可以引用聚合,以及WHERE子句中无法访问的表达式和列别名。+1正好是我搜索的标题。
SELECT d.document_id, max(sd.document_sent_date) as last_sent_date
FROM documents d
LEFT JOIN sent_documents sd ON d.document_id=sd.document_id
WHERE last_sent_date is NULL OR last_sent_date<d.last_updated
GROUP BY d.document_id