Как использовать переменную в запросе - PullRequest
0 голосов
/ 09 апреля 2019

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

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

SELECT 
   *
FROM 
   @table;

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Для этого вам нужно использовать динамический 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.

0 голосов
/ 09 апреля 2019

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...