Найти дату, сохраненную в строке MySQL, найти все записи после этой даты в одном запросе - PullRequest
1 голос
/ 10 февраля 2011

У меня есть таблица, в которой хранятся действия для целей ограничения скорости. То, что я хочу сделать, это выбрать самую новую строку, которая имеет «key_action» (действие, которое запускает время для ограничения скорости), а затем найти все записи после этой даты.

В настоящее время я могу думать только об этом, используя два запроса:

  1. SELECT created_at FROM actions WHERE key_action=1 ORDER BY created_at DESC LIMIT 1

  2. SELECT * FROM actions WHERE created_at >= (created_at from query 1)

Можно ли объединить эти два запроса в один?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Вы можете сделать запрос 1 подзапросом запроса 2.

SELECT * 
    FROM actions 
    WHERE created_at >= (SELECT MAX(created_at) 
                             FROM actions 
                             WHERE key_action=1)
1 голос
/ 10 февраля 2011

Я бы подумал, что @Джо Стефанелли ответил правильно, но в подзапросах в выражении WHERE недопустимы ограничения.Из этого обходного пути , я собрал этот запрос (не тестировался)

SELECT * FROM actions 
JOIN (SELECT created_at FROM actions WHERE key_action=1 ORDER BY created_at DESC LIMIT 1) createdActions
WHERE actions.created_at >= createdActions.created_at
...