Mysql创建表查询问题?

时间:2009-08-19 09:05:53

标签: mysql mysql-error-1064

我想创建一个表,其名称如下:

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

3 个答案:

答案 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()。