2010-01-04 3 views
1

Я уверен, что этот вопрос очевиден, но я занимаюсь все более сложным набором подзапросов за последний час или около того и не получаю нигде.SELECT id_field WHERE max (date_field) <'some date'

Мне нужно выбрать кучу идентификаторов из таблицы, где последняя дата для этой записи предшествует заданной дате. Я пытался:

SELECT id_field WHERE max(date_field) < 'some date' 

Но получение «не может иметь агрегат в поле». Я считал, что могу выбрать SELECT, где нет дат выше определенной даты, но в этот момент мой мозг размахивает маленьким белым флагом.

Спасибо.

ответ

2
SELECT id_field 
    FROM tbl 
GROUP BY id_field 
HAVING max(date_field) < 'some date' 
4
SELECT id_field 
    , max(date_field) 
    FROM tbl 
GROUP BY id_field 
HAVING max(date_field) < 'some date' 
+0

Вам действительно не нужно возвращать max (date_field), чтобы использовать его в предложении HAVING. Это в основном правильно (хотя большинство систем будут жаловаться на то, что вы не назвали второе поле), но не совсем попало в точку в соответствии с тем, что хочет OP. –

0

Использовать HAVING вместо WHERE. HAVING - это как для сгруппированных значений.

Смежные вопросы