簡體   English   中英

我可以使用MySQL變量命名表嗎?

[英]Can I use a MySQL variable to name a table?

我有一個工作流程,要求我保留一堆名稱不同的表,例如

2012_10_15_ncvoter68
2012_11_15_ncvoter68
2012_12_15_ncvoter68

你明白了。

假設我剛剛創建了表2012_12_15_ncvoter68

我想使用變量查詢此表。 例如,我可以定義一個變量:

SET @dt_ncv = CONCAT((SELECT DATE_FORMAT(CURDATE(), '%Y_%m_%d')),"_ncvoter68");

變量@dt_ncv值為字符串2012_12_15_ncvoter68

但是我無法弄清楚如何(或是否可能)使用此變量來引用表。

查詢:

SELECT count(*) FROM @dt_ncv;

只需給出一個SQL語法錯誤。

我嘗試使用准備好的語句,但這似乎無濟於事。

希望你們中的某些MySQL大師能夠提供幫助!

不,你不能那樣做。

您必須使用過程語言來處理變量替換。

如手冊所述(http://dev.mysql.com/doc/refman/5.1/en/user-variables.html)

用戶變量旨在提供數據值。 它們不能在SQL語句中直接用作標識符或標識符的一部分,例如在需要表或數據庫名稱的上下文中,或用作保留字(例如SELECT)。

我翻閱了舊的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;

它不漂亮,也不簡潔,但可以!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM