spr*_*aff 3 mysql sql mysql5 dynamic-sql
此查询运行,但它会生成表的名称,而不是从该表中实际选择.
SELECT T.*
FROM (SELECT tablename
FROM ListOfTables
WHERE id = 0) AS T
Run Code Online (Sandbox Code Playgroud)
在ListOfTables包含的地方id=0, tablename='some_table',我想返回相同的结果集,就好像我直接写了一样:
SELECT * FROM some_table
Run Code Online (Sandbox Code Playgroud)
在MySQL 5中是否有以本机方式执行此操作,或者我是否必须在应用程序中执行此操作?
要在MySQL中执行此操作,您需要创建一个只能从用户变量创建的预准备语句:
SELECT @tn := tablename FROM ListOfTables WHERE id = 0;
SET @qs = CONCAT('SELECT * FROM ', @tn);
PREPARE ps FROM @qs;
EXECUTE ps;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2751 次 |
| 最近记录: |