数据库
首页 > 数据库> > mysql – 相当于“SELECT * FROM(SELECT table_name FROM …)”的东西?

mysql – 相当于“SELECT * FROM(SELECT table_name FROM …)”的东西?

作者:互联网

此查询运行,但它会生成表的名称,而不是从该表中实际选择.

SELECT T.* 
  FROM (SELECT tablename 
          FROM ListOfTables 
         WHERE id = 0) AS T

其中ListOfTables包含id = 0,tablename =’some_table’,我想返回相同的结果集,就好像我直接写了这个:

SELECT * FROM some_table

在MySQL 5中是否有以本机方式执行此操作,或者我是否必须在应用程序中执行此操作?

解决方法:

要在MySQL中执行此操作,您需要创建一个prepared statement,您只能从user variable创建:

SELECT @tn := tablename FROM ListOfTables WHERE id = 0;

SET @qs = CONCAT('SELECT * FROM ', @tn);
PREPARE ps FROM @qs;
EXECUTE ps;

标签:sql,mysql,dynamic-sql,mysql5
来源: https://codeday.me/bug/20190726/1539827.html