MySQL отдельный лимит для "где событие_дата <'2010-01-01' или событие_дата> '2011-01-01'" - PullRequest
0 голосов
/ 31 августа 2011

Предположим, у нас есть таблица MySQL events, из которой мы выберем данные.Теперь у нас есть следующий SQL:

select *
from events
where event_date < '2010-01-01' or event_date > '2011-01-01'

Итак, мы можем получить коллекцию элементов до 2010-01-01 и после 2011-01-01.Я полагаю, что мой вопрос очень глупый, но можно ли ограничить записи «left» (до 2010-01-01) и «right» (после 2011-01-01) некоторым числом отдельно в одном запросе (без выполнениядва «избранных» запроса)?

1 Ответ

1 голос
/ 31 августа 2011

Это зависит от того, что вы подразумеваете под «запросом». Если вы посмотрите на синтаксис MySQL для оператора select в http://dev.mysql.com/doc/refman/5.0/en/select.html, то увидите, что предложение LIMIT выходит за пределы предложения where, но UNION (см. http://dev.mysql.com/doc/refman/5.0/en/union.html) может выходить за пределы LIMIT.

Но UNION - это еще один запрос в смысле одной поездки на сервер.

Так что ответ да и нет. Слово SELECT появляется дважды, но есть только один официальный запрос. Это означает, что планировщик запросов к базе данных сделает все возможное, так что не беспокойтесь с вашей стороны.

Пример:

(select * from events where event_date < '2010-01-01' limit 5)
union
(select * from events where event_date > '2011-01-01' limit 20)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...