【问题标题】:Duplicate entries in tables表中的重复条目
【发布时间】:2016-08-11 17:35:13
【问题描述】:

假设我有 3 个表,每个表的结构类似于:

| id | customer_id | col1       | col2       | col3        |
|----|-------------|------------|------------|-------------|
| 1  | C100        | some value | some value | some values |
| 2  | C101        |            |            |             |
| 3  | C102        |            |            |             |

现在我想用特定的customer-id 复制它们的行。

所以在伪代码中类似于:

DUPLICATE FROM tab1, tab2, tab3 WHERE customer_ID = C100 SET customer_ID = C987;

它将采用customer_idC100 的那三个表的值,并在每个表中创建另一个条目,但使用新的customer_id C987

这 3 个表如下所示:

| id | customer_id | col1       | col2       | col3        |
|----|-------------|------------|------------|-------------|
| 1  | C100        | some value | some value | some values |
| 2  | C101        |            |            |             |
| 3  | C102        |            |            |             |
| 4  | C987        | some value | some value | some value  |

此外,表中的结构也略有不同。

id 是主键,customer_id 是唯一的。

【问题讨论】:

  • 所以你要换行吗?您的示例中没有 customer_id =123 的行。表上是否有任何唯一索引?你的意思是“3 个表”还是“3 行”?
  • @dan08 对不起,我的错。我换了身份证。是的,id 和 customer-ID 都是唯一的。
  • 有几个表,在我的示例中我将其更改为 3。所以是的,我的意思是 3 个表。它们每个都有不同的结构。

标签: php mysql sql


【解决方案1】:

也许你可以做一个插入选择:

INSERT INTO tab1
SELECT id, 'C987', col1, col2, col3
FROM   tab1
WHERE  customer_id = 'C100';

您可以对 tab2 和 tab3 执行类似的查询。

【讨论】:

  • 是否可以不单独指定每一列?有几列,每列都有不同的结构。我想避免这种情况。
  • @user1170330 我认为你不能,因为你需要明确的价值'C987'。
  • @user1170330 - 不,您必须专门列出字段/列名称。
  • @cale_b 谢谢!我认为还有一个问题,因为 id 是主键,插入重复的 id 会失败。但是我在知道这是一个 PK 之前就写了这个答案:P
  • 我认为要绕过 id 作为主键,您只需指定要插入的字段并排除 id,(如果它是自动增量)
猜你喜欢
  • 2012-01-18
  • 2013-03-09
  • 2012-04-10
  • 2012-12-06
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 2014-12-24
相关资源
最近更新 更多