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

Posted

技术标签:

【中文标题】合并 2 个表字段并插入同一记录中的另一个字段【英文标题】:Merging 2 table fields and inserting into another field in the same record 【发布时间】:2013-06-20 02:14:11 【问题描述】:

我不确定我想要做的事情是否可能,但如果是的话,我显然没有正确使用谷歌搜索,并且希望我能在这里获得任何帮助,即使它只是指向“白痴”的链接指南”。

好的,目前,我有一个包含 150 多条记录的数据库表。每条记录都包含基本详细信息(姓名、位置、联系信息等)和登录凭据(用户 ID、密码等)。在潜在用户成功接受采访后,这些详细信息由网站管理员(即没有公众注册)捕获。创建记录时,会为用户分配一个 6 字符的“用户名前缀”(例如“UNPREF”),并将其与自动增量用户 ID(例如 125)一起用作用户名(例如 UNPREF125)登录网站。但是,用户名实际上并未存储在数据库中。相反,当用户登录时,登录脚本会拆分提供的用户名,并根据其相关字段检查两个块。

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

现在是棘手的一点。我的用户和管理员存储在不同服务器上的不同数据库中(后者超出了我的控制范围),但我最近发现了 Federated Tables 的乐趣,它工作得很好。一个小怪癖,寿;因为我的用户和管理员存储在不同的数据库中,并且因为我想最大化我可以存储在单个数据库中的记录数量(每个数据库的大小限制为 100mb),以公司当前的扩张速度和每个分支机构需要两个管理员帐户,用户和管理员最终会使用相同的 UserID 并不是不可能的情况。因此,modby 字段存储完整的用户名(即 UNPREF125 - 管理员拥有自己的唯一用户名前缀,以便区分管理员和用户)

现在,也许是因为我是 Federated Tables 的新手,但我似乎无法找到将服务器 A 上表中的字段(即modby)与 2 个单独的字段(即 @从服务器 B 调用的联合表中的 987654325@ 和 userid),但我想出了一个解决方法,方法是在服务器 B 的表中创建一个附加字段,即 username,它存储合并的值(即 'DBPREF125' ) 和 modby 被检查而不是这个,它工作正常(我相信有一个更简单的方法,但我会再保存这个课程)。

现在,这是我的问题。 admin 表目前很小(只有 26 条记录),因此我使用 phpMyAdmin 手动捕获了用户名,但我希望避免手动为 users 表中的 150 多条记录创建用户名。有什么方法可以让 mysql 提取 useridunprefix 字段的值,将它们连接在一起并将结果存储到同一记录的 username 字段中,或者我需要为此转向 PHP如果是这样,我将如何处理?

对于我的问题的冗长,我深表歉意,但我希望这将有助于解释为什么今天 Google 不是我的朋友。

非常感谢。

【问题讨论】:

您在寻找类似CONCAT(field1, field2) 的东西吗? 请不要在cmets中放长代码,点击问题下方的编辑链接。 抱歉,巴尔玛。谢谢指正 @DevZero:也感谢您的帮助。非常感谢。 【参考方案1】:

将组合存储在表中:

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

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

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

【讨论】:

优秀。我接受了您的第一个建议(因为我以后破坏某些东西的可能性较小)并且我的问题不再存在。谢谢。

以上是关于合并 2 个表字段并插入同一记录中的另一个字段的主要内容,如果未能解决你的问题,请参考以下文章

如何将同一表中的一条记录与另一条记录关联?

kettle合并记录 新旧表明明关键字段id一致结果老数据标记删除,新数据标记插入,求解

Oracle PL/SQL:如何根据同一记录的 ID 字段返回字符串值?

基于一个字段的不同记录在基于rails4中的另一个字段分组后没有列出

将多个字段添加到 CloudKit 中的同一记录名称行

将数组中对象的字段添加到同一数组中对象的另一个字段MongoDB