【问题标题】:How to auto-increment ID in Batch insert如何在批量插入中自动增加 ID
【发布时间】:2015-09-18 20:50:15
【问题描述】:

我有以下要执行的查询

INSERT INTO TableB (ID, Age, RollNo)
SELECT (select (max(id) + 1) from TableB), Age, RollNo
FROM TableA
WHERE Age > 20 AND RollNo < 500

现在所有新条目在 TableB 中都有相同的 ID

我是不是做错了什么。

附:我无法更改列属性,我无法将其设置为 AUTO-INCREMENT,它需要具有默认值 NULL

【问题讨论】:

    标签: mysql batch-insert


    【解决方案1】:

    TableB 中的ID 列声明为AUTO_INCREMENT,最终将用于此目的

    ALTER TABLE TableB MODIFY COLUMN ID INT auto_increment
    

    在这种情况下,您可以生成这些数字,例如

    SET @id := (SELECT MAX(ID) FROM TableB);
    
    INSERT INTO TableB (ID, Age, RollNo)
    SELECT (@id := @id + 1), Age, RollNo
    FROM TableA
    WHERE Age > 20 AND RollNo < 500;
    

    【讨论】:

    • P.S.我无法更改列属性,我无法将其设置为 AUTO-INCREMENT,它需要具有默认值 NULL
    • 你是个天才,我的朋友。非常感谢。
    猜你喜欢
    • 2019-07-12
    • 1970-01-01
    • 2013-04-25
    • 2020-09-23
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2013-10-31
    • 2018-03-18
    相关资源
    最近更新 更多