【问题标题】:enumerate rows of a table into a new column in MySQL将表的行枚举到MySQL中的新列中
【发布时间】:2016-07-13 21:01:21
【问题描述】:

我有一张桌子。我想在它上面选择一个可以用作各种索引的列。

我有这张桌子,table1:

col 1     col2  col3
a         b     c
d         e     f
g         h     i  

我想做:

CREATE TEMPORARY TABLE temp1 AS
SELECT (some way to create a sequence from 1 to the height of the table) AS `seq`
,col1
,col2
,col3
FROM table1;

得到

seq    col 1     col2  col3
1      a         b     c
2      d         e     f
3      g         h     i  

我一直在谷歌搜索,似乎找不到任何有用的东西。抱歉,我也是 MySQL 初学者。

【问题讨论】:

    标签: mysql sequence


    【解决方案1】:

    如果要使用临时表,可以复制table1的表定义,但添加一个自增列。

    DROP TEMPORARY TABLE IF EXISTS temp1;
    CREATE TEMPORARY TABLE temp1 (
      seq  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
      col1 VARCHAR(255),
      col2 VARCHAR(255),
      col3 VARCHAR(255)
    ) AS
      SELECT NULL seq
        ,col1
        ,col2
        ,col3
      FROM table1
    ;
    
    SELECT * FROM temp1;
    

    fiddle

    【讨论】:

    • 这是个好主意,我没想到会这样。
    【解决方案2】:

    我认为这些答案应该对您有所帮助:

    从此处复制您的表(创建为临时表除外): Duplicating a MySQL table, indexes and data

    然后按照这里的描述编写一个过程: How can I loop through all rows of a table? (MySQL)

    【讨论】:

    • 这是“仅链接答案”吗?
    猜你喜欢
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多