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;
上一篇:SEO之建立有效页面数据库:目的、定义、流程、应用


下一篇:windows10环境下的RabbitMQ安装步骤(图文)