【问题标题】:SQL - Copy row from one table to another and update column in destination table at the same timeSQL - 将行从一个表复制到另一个表并同时更新目标表中的列
【发布时间】:2011-05-22 17:10:34
【问题描述】:

我有 2 个如下结构的表。除了表名之外,两者都是相同的。

tbl_item_color_exp
>>item_color_ID
>>color_ID
>>item_ID

tbl_item_color_live
>>item_color_ID
>>color_ID
>>item_ID

我希望将几行从 tbl_item_color_live 表复制到 tbl_item_color_exp 表。我可以通过下面的 SQL 完成复制确切的列和行:

INSERT INTO tbl_item_color_exp 
SELECT * FROM tbl_item_color_live WHERE item_ID = $oldID

但我不想创建复制item_color_ID 主键,我想将复制的所有行的 item_ID 列更新为一个新变量$newID。总体思路是基于$oldID 复制所有行并使用&newID 更新目标表,但使用自动递增的主键item_color_ID 维护color_ID 列。

我可以使用几个 SQL 查询来完成它,但我想知道我是否可以通过一条 SQL 行以更有效的方式完成所有事情?希望大家能理解我的问题,谢谢。

【问题讨论】:

  • @gbn : 我正在使用 MYSQL。

标签: mysql sql copy


【解决方案1】:

我不是 100% 确定我理解你想要什么,但听起来你实际上只想复制 color_ids,你想用新的 item_id 设置它们,并且你希望自动编号发生。

听起来像:

INSERT INTO tbl_item_color_exp (color_id,item_id)
SELECT color_id,$newID FROM tbl_item_color_live WHERE item_ID = $oldID

【讨论】:

  • 18.5k - 你在开玩笑吗?大声笑。
  • Ops,你是对的,表已经切换了角色。我的错。已编辑。
  • 哇,成功了,我不知道我可以在 SQL SELECT 语句中使用固定变量值!谢谢。顺便说一句,你的评价不错,18.5k!
【解决方案2】:
INSERT INTO tbl_item_color_live (color_ID, item_ID)
SELECT color_ID, $newID FROM tbl_item_color_exp WHERE item_ID = $oldID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2017-06-01
    • 2020-11-03
    • 2022-11-04
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多