mysql - запрос внутри запроса - PullRequest
       11

mysql - запрос внутри запроса

1 голос
/ 20 декабря 2010

Как можно сделать следующее: (я использую mysql - phpmyadmin)

этот запрос возвращает имя таблицы:

Select table_name from Table1 where id = 1

Я хочу использовать его внутри другого запроса, например:

select val from (Select table_name from Table1 where id = 1)

, но это точно не работает, и поскольку phpmyadmin не поддерживает вызов хранимых процедур, может ли быть какое-либо возможное решение для этого?

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Вы не можете сделать это в одном выражении SQL.

Вы пытаетесь использовать data (значение поля) в качестве metadata (имя таблицы), а SQL не позволяетthis.

Вы можете разбить его на два оператора или написать динамический SQL в хранимой процедуре.Обратите внимание, что не все клиентские уровни поддерживают возврат наборов результатов из хранимых процедур.

0 голосов
/ 20 декабря 2010

Вы также можете выполнить динамический выбор:

declare v_table_name VarChar(128);
BEGIN 

Select table_name into v_table_name from Table1 where id = 1
SET @s = CONCAT('SELECT * FROM ', v_table_name, ' where id = 1'); 
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

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