gpt4 book ai didi

mysql - 通过添加递增数字使 varchar 字段中的重复项不重复

转载 作者:行者123 更新时间:2023-11-29 14:30:31 25 4
gpt4 key购买 nike

我正在升级数据库架构。一张表分为2张表。这两个表是链接的,链接它们的唯一方法是使用原始表中的 varchar 名称字段。

问题是客户可能有重复的姓名,因为姓名不是主键/唯一键。

我来这里寻找使这些名称唯一的想法,以便在将数据移动到两个新的链接表时可以将其用作键。

当我写这篇文章时,我想到了将当前 PK 合并为名称(如 CONCAT(name,id) as newName 中)并将其用作 key 。

还有一个唯一的代码字段,但这仅进入新表之一。

示例架构:

tableA
a_id INT(11) PRI AUTO_INCREMENT
code VARCHAR(10) UNIQUE
name VARCHAR(30) NOT NULL

newTableB
b_id INT(11) PRI AUTO_INCREMENT
name VARCHAR(30)

newTableC
c_id INT(11) PRI AUTO_INCREMENT
b_id INT(11) FK->newTableB
code VARCHAR(10) UNIQUE

我想要什么:

  1. 生成新的 b_id(自动增量)
  2. 从 tableA.name 导入 newTableB.name
  3. 从 tableA.code 导入 newTableC.code
  4. 从 tableA.a_id 导入的 newTableC.c_id

a_id 是另一个保持不变的第四个表中的 FK。经过上述更改后,c_id 现在将是第四个表中的有效 FK。

我的挑战:如何插入到这些新表中,但仍保留原始名称<->代码<->a_id关系,并将tableA.a_id值传输到newTableC.c_id。不关心 b_id 是否获得新的 auto_incr。值(value)观。

不确定我是否清楚地表达了问题,但如有任何问题,请随时提出。

谢谢丹

最佳答案

我通常会分几个部分完成这样的任务。首先插入表 b,但将 a 中的 id 字段放入名称列而不是名称中。然后将表a中的数据插入到tablec中。然后通过连接到表 a 的 a.id 和 b.name 字段来更新 tableb name 字段。但我不确定是否可以在 mysql 更新中使用联接。应该是一种编写语句的方法,一旦你有了数据。

或者,我临时向表 b 添加一个名为 tableid 的列。然后我将包含 a id 的数据放入 tableb 中,并使用它连接到表 a 以获取表 c 的 b.id 和表 A 数据。完成后,我从表 b 中删除 tableA 列。

关于mysql - 通过添加递增数字使 varchar 字段中的重复项不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com