Mysql 在运行WHERE子句之前选择最大(日期)行?

Mysql 在运行WHERE子句之前选择最大(日期)行?,mysql,sql,aggregate-functions,Mysql,Sql,Aggregate Functions,我有一个查询,它回显特定日期之前的所有行 SELECT MAX(h.date), h.url FROM HISTORY h WHERE h.uid = '19' AND h.date < (SELECT MAX(t.date) FROM History t WHERE t.url = 'canabalt.com' AND t.uid

我有一个查询,它回显特定日期之前的所有行

  SELECT MAX(h.date), h.url
    FROM HISTORY h
   WHERE h.uid = '19'
     AND h.date < (SELECT MAX(t.date) 
                     FROM History t
                    WHERE t.url = 'canabalt.com' 
                      AND t.uid = '19')
GROUP BY h.url
ORDER BY MAX(h.date) DESC
我的问题是,我必须只选择具有maxDate的行

但是where子句删除了许多可能具有maxDate行的行,然后在其余字段中查找maxDate


如何首先选择maxDate,然后才运行WHERE子句。

尝试将您的条件放置在Having子句中,Having子句将在Group By子句之后处理

Select Url, Max(Date) As MaxDate
From History
Where UID = '19'
Group By Url
Having  Max( Date ) <   (
                        Select Max( H1.Date )
                        From History As H1
                        Where H1.URL = 'canabalt.com' 
                            And H1.UID = '19'
                        )
Order By Max( Date ) Desc

不太确定您的意思,您必须只选择具有maxDate的行,并在其余字段中查找maxDate。你能举个例子吗?