我怎样才能改变临时表?

时间:2010-03-12 17:33:55

标签: sql mysql

我需要创建一个临时表,而不是向它添加一个新的int NOT NULL AUTO_INCREMENT字段,这样我就可以将新字段用作行号。我的查询有什么问题?

SELECT post, newid FROM ((SELECT post`test_posts`) temp
ALTER TABLE temp ADD COLUMN newid int NOT NULL AUTO_INCREMENT)

编辑:

SELECT post, newid FROM ((SELECT post, newid as int NOT NULL AUTO_INCREMENT FROM `test_posts`) temp

这不起作用。

2 个答案:

答案 0 :(得分:1)

这并不意味着这是不可能的,但我没有看到任何允许您从SELECT中修改表的SQL版本。拉出alter table并将其作为单独的声明。解决任何语法问题后,你应该很好。

此外,看起来你实际上没有“临时表”可以改变。相反,您正在寻找一种解决方案,可以让您在“SELECT post ...”查询的结果中添加任意ID。我不知道您使用的是哪种引擎,但序列计数器,rowid,rownum或其他类似功能更能满足您的需求。

答案 1 :(得分:0)

如果您需要行号并且不想实际创建临时表,则可以使用用户变量来实现。

SET @my_row_num =0;
SELECT @my_row_num := @my_row_num+1 as row_number, post, newid FROM ((SELECT post`test_posts`) temp;