我有一个工作流程,要求我保留一堆具有不同名称的表,例如
2012_10_15_ncvoter68
2012_11_15_ncvoter68
2012_12_15_ncvoter68
Run Code Online (Sandbox Code Playgroud)
你明白了。
假设我刚刚创建了该表2012_12_15_ncvoter68。
我想使用变量查询该表。例如,我可以定义一个变量:
SET @dt_ncv = CONCAT((SELECT DATE_FORMAT(CURDATE(), '%Y_%m_%d')),"_ncvoter68");
Run Code Online (Sandbox Code Playgroud)
该变量的@dt_ncv计算结果为字符串2012_12_15_ncvoter68。
但我无法弄清楚如何(或者是否可能)使用此变量来引用该表。
查询:
SELECT count(*) FROM @dt_ncv;
Run Code Online (Sandbox Code Playgroud)
只需给出 SQL 语法错误即可。
我尝试过使用准备好的语句,但这似乎没有帮助。
我希望 MySQL 专家能够提供帮助!
我查阅了旧的 MySQL 笔记并找到了一种方法:
SET @dt_ncv = CONCAT((SELECT DATE_FORMAT(CURDATE(), '%Y_%m_%d')),"_ncvoter68");
SET @cntstmt = CONCAT_WS(" ", "SELECT count(*) FROM",@dt_ncv);
PREPARE ncv_count_stmt FROM @cntstmt;
EXECUTE ncv_count_stmt;
Run Code Online (Sandbox Code Playgroud)
它不漂亮,也不简洁,但它有效!