【问题标题】:MySQL - INSERT INTO Table With a New IDMySQL - 使用新 ID 插入表
【发布时间】:2017-06-19 14:52:31
【问题描述】:

我有两张桌子,我想将一行从一张复制到另一张。但是,它们都使用自动递增的 ID 号作为主键,如果 ID 已存在于另一个表中,这会阻止我复制行。

我想做的是:

INSERT INTO tableB SELECT * FROM tableA WHERE ID = 1

我想的可能是将行存储为变量,暂时将 ID 设置为空白,然后在插入新表后为其分配下一个最高数字?

这样的事情可能吗?

编辑:

ID、Deal_ID、Redeemed_At、Wowcher_Code、Deal_Title、Customer_Name、House_Name_Number、Address_Line_1、Address_Line_2、城市、县、邮政编码、电子邮件、电话、出生日期、Custom_Field、Marketing_Permission、Product_Name、Product_Options

【问题讨论】:

标签: mysql sql


【解决方案1】:

在这种情况下,您不能使用 *(所有列).. 您必须明确设置您需要的列,例如:

INSERT INTO tableB (col1, col2, col3) 
SELECT col1, col2, col3 
FROM tableA 
WHERE ID = 1

避免 ID 列

【讨论】:

  • 也许您的意思是“不能”而不是“可以”?​​span>
  • 在所有答案中,这是最有效的,因为我也需要在括号中列出列。谢谢!
【解决方案2】:

只需选择没有 ID 的列。

INSERT INTO tableB SELECT name,age,any_other_column FROM tableA WHERE ID = 1

【讨论】:

    【解决方案3】:

    尝试用没有 ID 的字段列表替换星号

    INSERT INTO tableB SELECT Field1,Field2,Field3...FieldXX FROM tableA WHERE ID = 1
    

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多