2012-06-15 3 views
1

Должно быть достаточно понятно; любая идея, почему я не могу сделать:Попытка вставить сравнение date_add в MySQL-запросе

select user_id from my_table where created_at<date_add(min(created_at), INTERVAL 1 MINUTE) 

Я пытаюсь вернуть только те строки, которые были созданы в течение одной минуты самих ранних меток времени. Благодаря!

ответ

1

Вы должны использовать HAVING вместо WHERE при работе с агрегатными функциями ... Тем не менее, ваш запрос будет немного более сложным, я думаю:

SELECT user_id, 
     created_at, (
      SELECT DATE_ADD(MIN(created_at), INTERVAL 1 MINUTE) 
      FROM my_table 
     ) AS earliest 
    FROM my_table t1 
HAVING created_at < earliest; 

Вот SQLFiddle играть.)

+0

как ни странно, я попробовал это, и я получаю неизвестную колонка (created_at) ошибка 1054 ... даже когда я пытаюсь сделать my_table.created_at. – serilain

+0

Мне нужно какое-то соединение здесь? – serilain

0

Попробуйте это:

SELECT user_id 
FROM my_table 
WHERE created_at < DATE_ADD((SELECT MIN(created_at) FROM my_table), INTERVAL 1 MINUTE) 
0
SELECT user_id FROM my_table 
WHERE created_id < 
(
    SELECT (min_dt + INTERVAL 1 MINUTE) mindt FROM 
    (SELECT MIN(created_id) min_dt FROM my_table) A 
); 
Смежные вопросы