ВЫБЕРИТЕ строки max(Date) ПЕРЕД выполнением предложения WHERE?

У меня есть этот запрос, который повторяет все строки до определенной даты.

  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

Моя проблема в том, что я должен выбрать только те строки, которые имеют максимум (Дата).

Но предложение where исключает количество строк, которые могут иметь строку max (Date), а затем ищет max (Date) в оставшихся полях.

Как я могу сначала выбрать SELECT max(Date) и только потом выполнять предложения WHERE.

1 ответ

Решение

Попробуйте разместить критерии в предложении "Наличие", которое обрабатывается после предложения "Группировать по".

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
Другие вопросы по тегам