我需要创建一个临时表,而不是向它添加一个新的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
这不起作用。
答案 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;