Можно ли условно запускать последовательные подзапросы MySQL? - PullRequest
2 голосов
/ 26 ноября 2010

В настоящее время у меня есть PHP-код, который выполняет один сложный запрос с подзапросами в надежде найти 12 подходящих записей. Если возвращается менее 12 записей, код запускает вторую версию того же запроса со слегка измененным предложением WHERE, чтобы добавить к записям, ранее полученным первым запросом. Он продолжает запускать измененные версии запроса до тех пор, пока не будет собрано 12 записей.

Я знаю, что мог бы объединить несколько запросов (в настоящее время их пять) с UNION, но затем все запросы запускаются, даже если первый запрос в объединении успешно возвращает 12 записей. Поскольку каждый запрос сложен, я не хочу тратить ресурсы впустую. (Или я ошибаюсь? Знает ли MySQL прекратить выполнение подзапросов после достижения LIMIT?)

Есть ли способ в MySQL выполнить то, что я сейчас делаю в PHP? Например, как я могу получить запрос с пятью подзапросами и выполнять последовательные подзапросы только в том случае, если предыдущие подзапросы не дают желаемого количества?

1 Ответ

1 голос
/ 26 ноября 2010

Вы можете создать хранимую процедуру на сервере, которая выполняет эту проверку довольно просто.

...