合并2个表字段并插入到同一记录中的另一个字段


Merging 2 table fields and inserting into another field in the same record

我不确定我想做的事情是否可能,但是,如果是的话,我显然没有正确地搜索,我会感谢我能在这里得到的任何帮助,即使它只是一个链接到"白痴指南"。

现在,我有一个包含150多条记录的数据库表。每条记录包含基本的详细信息(姓名、位置、联系信息等)和登录凭据(UserID、密码等)。这些详细信息由网站管理员在潜在用户经过成功的面试过程后获取(即没有一般的公开注册)。当一个记录被创建时,一个6字符的"用户名前缀"被分配给用户(例如:'UNPREF'),这与自动增量的用户id(例如125)一起被用作登录网站的用户名(例如UNPREF125)。但是,用户名实际上并不存储在数据库中。相反,当用户登录时,登录脚本将提供的用户名拆分,并根据其相关字段检查两个块。

除了这个主用户表之外,还有许多其他表包含附加信息(例如,教育资格,工作经历等),这些表通过UserID链接到用户,根据主表。现在,用户和管理员都可以更新用户的数据,因此,我为每一行创建了一个字段,记录谁最后修改了记录(modby)和何时修改了记录(modon),这样,如果有任何恶作剧,我可以确定谁最后修改了记录,并且从理论上讲,可以处理特定的个人,而不需要任何"他说/她说"的废话。

现在是棘手的地方。我的用户和管理员存储在不同服务器上的不同数据库中(后者超出了我的控制范围),但我最近发现了联邦表的乐趣,它工作得非常出色。不过,有一个小小的怪癖;因为我的用户和管理员存储在不同的数据库中,并且因为我想最大限度地增加我可以存储在单个数据库中的记录数量(每个数据库的大小限制为100mb),随着公司当前的扩展速度和每个分支需要两个管理帐户,用户和管理员最终使用相同UserID的情况并非不可能发生。因此,modby字段存储完整的用户名(即UNPREF125 - admins有自己的,唯一的用户名前缀,以便区分admins和users)

现在,或许是因为我这样一个新手Federated表但我似乎无法找到一个方法来比较表中的一个字段在服务器(例如modby) 2单独的字段(即unprefixuserid)在联邦表,从服务器调用B,但我想出了一个解决方案通过创建额外的字段在服务器B的表,即username,商店合并后的值(即"DBPREF125")和modby检查在此相反,(我相信有一个更简单的方法,但我将把这个教训保存到下次)。

现在,这是我的问题。admin表目前很小(只有26条记录),因此我使用phpMyAdmin手动捕获用户名,但我更愿意避免为用户表中的150多条记录手动创建用户名。是否有任何方法可以让MySQL拉useridunprefix字段的值,将它们连接在一起,并将结果存储到同一记录的username字段,或者我需要转向PHP为此,如果是这样,我该如何去做?

我很抱歉我的问题很长,但我希望这能帮助解释为什么谷歌是而不是我今天的朋友。

提前感谢。

将组合存储在表中:

UPDATE TableB
SET username = CONCAT(unprefix, userid);

或者你可以只在比较时使用:

SELECT *
FROM TableA a
JOIN TableB b
ON a.modby = CONCAT(b.unprefix, b.userid);