如何做到以下几点: (我正在使用mysql - phpmyadmin)
此查询返回一个表名:
Select table_name from Table1 where id = 1
我想在另一个查询中使用它,例如:
select val from (Select table_name from Table1 where id = 1)
但这肯定不起作用,因为phpmyadmin不支持调用存储过程,是否有任何可能的解决方案呢?
答案 0 :(得分:1)
你不能在一个SQL
语句中真正做到这一点。
您尝试将data
(字段值)用作metadata
(表名),而SQL
不允许这样做。
您可以在两个语句中将其分解,或者在存储过程中编写动态SQL
。请注意,并非所有客户端层都支持从存储过程返回结果集。
答案 1 :(得分:0)
你也可以执行动态选择:
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;