具有特定格式值的 MySQl 更新列

标签 mysql sql join

我正在处理一个旧的应用程序和 mysql 数据库,遗憾的是它有点乱。

我对导出所需的列感兴趣,其中包含特定文档的编辑者姓名。此列中的值应以特定方式格式化,并且应与当前不一致。

一个文档可以有多个编辑器。我有一个包含所有不同编辑器的表,我需要将其与当前(格式不正确的)编辑器值相匹配。我知道这不是执行此操作的最佳方式(这是应用程序当前的工作方式)但我需要将编辑器列的格式设置如下:

"Surname, Initial. and Surname, Initial. and Surname, Initial"

例如:

"Bloggs, J. and Doe, J."
"Smith, M.J. and Bloggs, J. and Jones, P"
"Williams, S. and Smith, M.J. Doe, J."

但是该列目前不一致,没有适当的实际格式:

"J Bloggs, J Doe"
"MJ Smith, J Bloggs and P Jones"
"Williams, S, M.J Smith. Doe, J."

等...

这是我当前的表格:

文件:

| title       |  editors                       |
------------------------------------------------
| doc title 1 |  J Bloggs, J Doe               |
| doc title 2 |  M Smith, J Bloggs and P Jones |
| doc title 3 |  Williams, S, M Smith. Doe, J. |

编辑:

| initial | name       |
------------------------
| J.      | Bloggs     |
| J.      | Doe        |
| M.J.    | Smith      |
| P.      | Jones      |
| S.      | Williams   |

出于测试目的,我在文档表中添加了一列 (formatted_editors):

| title       |  editors                       | formatted_editors              |
---------------------------------------------------------------------------------

我需要看起来像这样:

| title       |  editors                       | formatted_editors              |
---------------------------------------------------------------------------------
| doc title 1 |  J Bloggs, J Doe               | Bloggs, J. and Doe, J.
| doc title 2 |  M Smith, J Bloggs and P Jones | Smith, M.J. and Bloggs, J. and Jones, P
| doc title 3 |  Williams, S, M Smith. Doe, J. | Williams, S. and Smith, M.J. Doe, J.

我已经尝试了以下(以及其他各种)但似乎没有任何运气 - 我认为这可能与我的分组有关?

SELECT d. title, d.editors, group_concat(e.name, ', ', e.initial SEPARATOR ' and ') as      formatted_editors 
FROM documents d
INNER JOIN editors e
ON d.editors LIKE concat('%', e.name, '%')
WHERE d.editors LIKE concat('%', e.name, '%') 
and  et.editors LIKE concat('%', e.initial, '%')
GROUP BY et.editors; 

任何帮助/指点将不胜感激,

最佳答案

然后没有“真正”可靠的方法来解决这个问题......我使用了一些基本的 SQL 来修复/匹配我能做的,然后手动完成剩下的。

谢谢, 乔恩。

关于具有特定格式值的 MySQl 更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834910/

相关文章:

sql - MYSQL 中多态关联的最佳实践

swift - 核心数据连接表多对多关系 - 对象创建

mysql:键 '0' 的重复条目 'PRIMARY' 和奇怪的 ID 行为

mysql - 当我在 jsp 中单击提交按钮时出现错误

php - 没有 laravel select Row 的 Eloquent 不起作用

MySQL 随机获取 10 行,其中 3 行预定义行需要成为结果的一部分并位于开头

sql - 更改sql server中的日期格式

mysql - 同步数据的最佳方式: MySQL -> SQL Server

sql - 如何从 SQL 中获取以下股票信息?

sql - 使用 between operator 的 Hive 不等式连接