我想创建一个表,其名称如下:
name_thisyear_thisweekofyear,例如 - > name_2009_40
我尝试了这个查询:
CREATE TABLE IF NOT NOT EXISTS name_YEAR(NOW())_ WEEKOFYEAR(NOW())(id int NOT NULL AUTO_INCREMENT PRIMARY KEY,phone_no int,created datetime,deleted datetime)
它不起作用。请帮忙
错误讯息:
#1064 - 您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在'NOW()附近使用正确的语法_WEEKOFYEAR(NOW())(id int NOT NULL AUTO_INCREMENT PRIMARY KEY,userid int,'at line 1
答案 0 :(得分:3)
你不能这样做......你必须指定表名,一个函数不能在那里执行
标识符可以引用或不引用。如果标识符包含特殊字符或是保留字,则必须在引用时引用它。当前字符集“_”和“$”中的字母数字字符集不是特殊字符。
答案 1 :(得分:1)
这不起作用,因为表名中不允许使用parantheses(除非你使用反引号正确地转义它们)
mysql将您的查询视为:
CREATE TABLE IF NOT EXISTS
name_YEAR(
NOW() # this is causing an error already
)
/*GARBAGE: */_WEEKOFYEAR(NOW())(id int NOT NULL AUTO_INCREMENT PRIMARY KEY, phone_no int, created datetime, deleted datetime)
我不知道是否可以动态创建表名的一部分,最后将这些部分连接在一起。
简单的方法是在php中计算名称并用php创建查询
答案 2 :(得分:0)
你做不到。表和列名称必须以indentifier。
的形式给出PS:要在其他地方连接,请使用concat()。