繁体   English   中英

如何更改临时表?

[英]How can I alter a temp table?

我需要创建一个临时表,而不是向其中添加一个新的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

以太这没用。

并不是说这不可能,但是我还没有看到任何SQL版本允许您从SELECT内修改表。 拉出alter table并使其成为单独的语句。 修复所有语法问题后,您应该会很好。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM