2014-11-20 2 views
0

У меня есть список значений в столбце таблицы, который мне нужно сопоставить с именами таблиц, желательно просто с использованием инструкции SQL.MySQL: совпадение с динамическими значениями

Если значения были статичными, я полагаю, что ЗЕЬЕСТ будет что-то вроде этого:

SELECT table_name FROM information_schema.TABLES WHERE 
match(table_name) against('124512' +'36326' +'23636' IN BOOLEAN MODE) 

Однако, мне нужно, чтобы соответствовать против динамических значений, поступающих из ЗЕЬЕСТА:

SELECT tableid FROM databaseName.tableOverviewTableName 
WHERE template = 'templateName') 

Таблица tableid приведена в таблице table_name для таблиц, которые я хочу.

Этого можно достичь с помощью инструкции SQL?

ответ

0

Вы можете сделать это через подготовленное заявление (не напрямую через запрос)

SET @tq = (SELECT tableid FROM databaseName.tableOverviewTableName WHERE template = 'templateName')); 
SET @stmq = CONCAT('SELECT * FROM ', @tq); 
Prepare stmt FROM @stmq; 
Execute stmt; 
DEALLOCATE PREPARE stmt; 
+0

Может быть, я делаю что-то неправильно, но когда я пытаюсь запустить код выше, я получаю сообщение об ошибке «# 1242 - подзапросы возвращает более 1 строки "on" SET @tq ... ". Кроме того, мне нужен выбранный номер в выражении match-against. – ElToro1966

Смежные вопросы