2011-10-07 49 views
2

我有这个查询,回答特定日期之前的所有行。在运行WHERE子句之前SELECT max(Date)rows?

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 

我的问题是,我只能选择具有max(日期)的行。

但是where子句消除了可能具有max(Date)行的行数,然后在其余字段中查找max(Date)。

我该如何先选择max(Date),然后才运行WHERE子句。

+2

不太清楚你的意思是'必须选择具有max(Date)'的行并且'在其余字段中寻找max(Date)“。你能提供一个例子吗? – mellamokb

回答

2

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

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