MySQL WHERE timestamp> = SUBDATE (MAX (отметка времени), INTERVAL 5 DAY) - PullRequest
1 голос
/ 23 июня 2009

Какой лучший способ выразить это в одном запросе SQL?

"Выберите несколько случайных предметов, которые попадают в x дней с момента появления самого нового предмета в таблице."

Я попробовал следующее:

SELECT *
FROM table
HAVING `timestamp` >= SUBDATE(MAX(`timestamp`), INTERVAL 5 DAY)
ORDER BY RAND()
LIMIT 10

Но это дает мне только один результат, а не 10. WHERE вместо HAVING не обрезает его из-за использования MAX().

Ответы [ 2 ]

3 голосов
/ 23 июня 2009

Вы, вероятно, хотите, чтобы ваш оператор MAX содержался в подзапросе:

SELECT *
FROM table
WHERE `timestamp` >= SUBDATE((SELECT MAX(`timestamp`) FROM table), INTERVAL 5 DAY)
ORDER BY RAND()
LIMIT 10
0 голосов
/ 23 июня 2009
SELECT *
FROM table
where `timestamp` >= (select SUBDATE(MAX(`timestamp`), INTERVAL 5 DAY) from table )
ORDER BY RAND()
LIMIT 10;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...