我对 mysql 命令很烂,请帮忙。这是表格的样子。
table1
StudentID AlternateName
15654654 William001
45245324 Smith002
45245245 Wilson003
23423232 Johnaton004
45345322 Robert005
88787164 Joshua006
45645442 Jessie007
table 2
RealName ZipCode AltName
Smith 66521 null
johnaton 55224 null
Robert 63118 null
william 53210 null
Jessie 88763 null
wilson 55754 null
Joshua 78301 null
我需要在表 2 中创建一个外键以链接到表 1。我有相似的数据但不完全匹配。我需要在表 1 中取 AlternateName 列的前 5 个字符。如果前 5 个字符与表 2 中 RealName 列的任何前 5 个字符匹配(不考虑大小写*),则将 AlternataName 中的数据写入表 2 中称为 AltName 的列。
例如。 table1 中的 William001 应该与 table2 中的 william 匹配,William001 将写入该行的 AltName。是的,我的主键是一个名称后跟一个数字。我知道这不是应该的,但这是我需要做的。
如何使用 mysql 执行此操作?谢谢。
最佳答案
您可以加入名称最左边的 5 个字符(不区分大小写)并更新匹配记录。
考虑:
update table2 t2
inner join table1 t1
on lower(left(t1.AlternateName, 5)) = lower(left(t2.RealName, 5))
set t2.AltName = t1.AlternateName
注意:如果有多个匹配记录,此策略的行为可能不会一致...
关于mysql模式匹配两个不同表中的前5个字符,然后将数据输入到单独的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58804888/