Запустить SQL-запрос, сохраненный в поле - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть дополнительный вопрос по ссылке ниже.Очевидно, я должен создать новый вопрос (извините, если не должен, я новичок в stackoverflow)

Один из ответов на этот вопрос был следующим:

SELECT sql_text INTO @sql FROM sql_queries WHERE id = 1;
PREPARE sql_query FROM @sql;
EXECUTE sql_query;

Помогло ли мнезапустить вышеупомянутую строку за строкой, но я хочу выполнить это в целом и использовать результат в другом запросе.Поэтому моя проблема заключается в следующем:

1 - не работает, если я удаляю точки с запятой и пытаюсь запустить три строки одновременно.

2 - Как я могу прочитатьРезультаты этого запуска в запросе.Я думал поместить все три строки в подзапрос, но это не сработало.

Буду признателен, если у вас есть какие-либо комментарии к ним.Спасибо!

Оригинальный вопрос

1 Ответ

0 голосов
/ 20 сентября 2018

Я не думаю, что вы можете «встроить» выполнение (или его результаты) в другой запрос, который звучит так, как ваша цель.Вместо этого вы можете рассмотреть возможность создания вашего окончательного запроса с помощью запроса @sql в виде подзапроса, например:

SET @finalSQL = CONCAT("SELECT stuff FROM sometables JOIN (", @sql, ") AS subQ ON blah");
PREPARE sql_query FROM @sql;
EXECUTE sql_query;

Конечно, вам нужно сделать много предположений относительно @sqlзапрос, который вы предоставили;как минимум, вы должны предположить: он будет действителен для условий соединения (или, тем не менее, используется подзапрос) и что он не завершается точкой с запятой.Последнее может быть легко проверено и исправлено, первое может потребовать значительного количества анализа и анализа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...