mysql - 在查询中查询

时间:2010-12-20 15:02:26

标签: mysql phpmyadmin

如何做到以下几点: (我正在使用mysql - phpmyadmin)

此查询返回一个表名:

Select table_name from Table1 where id = 1

我想在另一个查询中使用它,例如:

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

但这肯定不起作用,因为phpmyadmin不支持调用存储过程,是否有任何可能的解决方案呢?

2 个答案:

答案 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;