Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-在where子句中引用聚合列_Mysql_Sql_Max_Aggregate - Fatal编程技术网

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