mysql模式匹配两个不同表中的前5个字符,然后将数据输入到单独的列中

标签 mysql sql string join sql-update

我对 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/

相关文章:

python - 正则表达式匹配字符串中最后一次出现的年份

c# - 用另一个字符串替换字符串中的字符

php - 在php中循环执行mysql查询,参数存储在来自android的arrayList中

mysql - money应该使用什么数据类型

java - 如何通过查询选择对象列表作为 Hibernate 组的构造函数参数的一部分

mysql - 如何获得具有所有或任何提供标签的帖子?

mysql - SQL group by,如何定义每个组的记录,例如。最新的,已使用

来自 3 个表的 mysql "distinct query"在大数据上执行缓慢

php - MySQL 中的数组

java - 如何将 Path 对象用作字符串