mysql - mysql模式匹配两个不同表中的前5个字符,然后将数据输入到单独的列中
问题描述
我很讨厌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
我需要在 table2 中创建一个外键来链接到 table1。我有类似的数据,但不完全匹配。我需要在 table1 中取列 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
注意:如果有多个匹配记录,此策略可能不会表现一致......
推荐阅读
- html - div 覆盖 flex 容器中的其他 div
- nginx - 使用 Gunicorn 在 Windows 机器上的烧瓶 Web 应用程序上配置 NGINX
- javascript - 尝试使用 JavaScript 和 CSS 创建数字 3.2.1 倒计时
- javascript - 反应无限幻灯片
- kotlin - 所有挂起函数都有一个作业吗?
- java - 我可以使用 com.android.internal.Itelephony 吗?
- android - 以可读形式转换数字值?
- algorithm - 计算 AVL 树算法的时间复杂度
- html - 使用纯 CSS 将元素高度设置为等于 flex 宽度
- python - 如何检查函数是否是列表的属性?