Как использовать переменную в запросе

Мне нужно использовать @var из запроса

SET @table := (SELECT 
                  SCHEMA_NAME
           FROM
          information_schema.SCHEMATA
           WHERE
          SCHEMA_NAME LIKE 'test%'
           LIMIT 1);

SELECT 
   *
FROM 
   @table;
stackoverflow.com/help/mcve
TheWildHealer 09.04.2019 16:36

Привет и добро пожаловать в Stack Overflow. В нынешнем виде на ваш вопрос сложно ответить, но мне думать нужен динамический SQL. stackoverflow.com/questions/190776/…

Neville Kuyt 09.04.2019 16:39
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно объявить таблицу, прежде чем вы сможете установить таблицу.

DECLARE @table TABLE ( SCHEMA_NAME NVARCHAR(MAX) )

INSERT INTO @table
SELECT SCHEMA_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE 'test%'

Если вы пытались ограничить таблицу 1 строкой с помощью «Limit 1», просто используйте «TOP 1» следующим образом:

INSERT INTO @table
SELECT TOP 1 SCHEMA_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE 'test%'

После того, как это установлено, вы можете запросить временную таблицу:

SELECT * FROM @table

Для этого вам нужно использовать динамический SQL. В MySQL это prepare/execute:

SELECT @table := SCHEMA_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME LIKE 'test%'
LIMIT 1;

SET @sql = CONCAT('SELECT * FROM ', @table);

prepare s from @sql;

execute s;

Я должен отметить, что рассматривать схему как таблицу действительно странно, но это то, о чем вы спрашиваете. Если вам нужны таблицы, вы должны использовать information_schema.tables.

Другие вопросы по теме