gpt4 book ai didi

Mysql连接两个表,其中table1中的部分字符串在table2中

转载 作者:行者123 更新时间:2023-11-28 23:58:47 24 4
gpt4 key购买 nike

我目前正在开发一个员工数据库网站。以前我的客户使用 ms。 excel 作为没有结构的数据库存储。但他们已经有成千上万的数据。我已经将数据导入到临时表中。问题是,我不得不用数据库结构调整excel数据。

这是我的表结构:

ms_absen :

id name
------------------------
11 vnice ardian
22 setiawan ecco
33 andytaman1
44 rusdytaman2

ms_employee :

id_emp name
---------------------------
01 ardiansyah
02 setiawan thea
03 arif andy syah
04 jonathan
05 f rusdy

expected result :

id_emp name id
--------------------------------------
01 ardiansyah 11
02 setiawan thea 22
03 arif andy syah 33
05 rusdy 44

这是我目前尝试过的,

select e.id_emp,e.name,a.id
from ms_employee as e
inner join ms_absen a
on a.name like concat('%',left(e.name,3),'%')

这只返回 ardiansyah、setiawan thea 和 rusdy 而不是除 jonathan 之外的所有员工。请注意,我使用的是 inner join 而不是 left join,因为我想消除 不在 ms_absen 表中的雇员。

最佳答案

你不能在没有映射的情况下将一件事映射到另一件事(或加入你的状态)。

如果我是你,我会尝试将其中一个表映射到另一个具有良好数据的表,然后应用你指定的内容

select e.id_emp,e.name,a.id
from ms_employee as e
inner join ms_absen a
on a.name like concat('%',left(e.name,3),'%')

问题是 - 如何将您的数据转化为好的数据?

你看,你在这个名称栏中有一个空格。如果你没有空间,那就更容易了。因此,您将一个表映射到具有列 id, name_part1, name_part2, ..., name_partN 的某个转换表,其中 N 是名称中的最大单词数(找到这个N 可以手动完成)。然后你可以应用类似这个的逻辑(this is the comment to MySQL documentation on string built-in functions):

// Posted by [name withheld] on March 22 2006 8:02pm

// This will split an IP address ("a.b.c.d") into 4 respective octets:

SELECT
`ip` ,
SUBSTRING_INDEX( `ip` , '.', 1 ) AS a,
SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', 2 ),'.',-1) AS b,
SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', -2 ),'.',1) AS c,
SUBSTRING_INDEX( `ip` , '.', -1 ) AS d
FROM log_table

因此,您将拥有一个表,其中每一列 nameX 其中 X 都在 1...N 范围内。

这是我现在可以在不使用 RDBMS 的情况下给你的最好的建议)

关于Mysql连接两个表,其中table1中的部分字符串在table2中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30695478/

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