MySQL 仅从 SELECT 创建具有自动增量的临时表

Posted

技术标签:

【中文标题】MySQL 仅从 SELECT 创建具有自动增量的临时表【英文标题】:MySQL create temporary table with autoincrement from SELECT only 【发布时间】:2015-01-03 11:44:37 【问题描述】:

使用 mysql 我知道可以从 SELECT 创建一个临时表: Create a temporary table in a SELECT statement without a separate CREATE TABLE

我也知道可以在临时表中创建自动增量: Auto Increment in Temporary Table

我想同时做这两个:从 SELECT 语句创建一个临时表,我希望临时表有一个自动增量列。

有可能吗?

【问题讨论】:

谢谢,但我必须从 select 本身创建临时表(之前没有创建临时表) 【参考方案1】:

如果要创建带有行号列的临时表,请使用变量:

create temporary table temp as
    select (@rn := @rn + 1) as seqnum, t.*
    from t cross join
         (select @rn := 0) vars;

对于新的inserts,这不会自动递增。如果需要,您需要更改表定义。

【讨论】:

以上是关于MySQL 仅从 SELECT 创建具有自动增量的临时表的主要内容,如果未能解决你的问题,请参考以下文章

Mysql IN子句与自动增量ID的范围

如何在 MySQL 中对 GROUP BY 结果的 SELECT INTO 使用自动增量?

在MYSQL中手动设置具有自动增量的订单号[重复]

带有Python的Mysql无法插入具有自动增量ID的记录,为啥?

如何在mysql中获取所有具有自动增量主键的表?

MySQL 在从另一个表中选择时插入到具有自动增量的表中