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