This question already has an answer here:
Mysql Join Two tables on keys
(1个答案)
2年前关闭。
我需要加入一些表,我无法更改数据库,因为它正在多个不同的应用程序中使用。
第一个表如下所示
而forrening表只是简单地加入了ID,看起来可能如下所示
而且我需要将表中的ID列表匹配到表二中的ID。
该查询将看起来像以下内容,但我不确定联接条件
我认为可以使用正则表达式来完成。
我试过了locate,但它也可以匹配子字符串,例如1、3将匹配到13。等等。
我也环顾四周,发现了这篇文章,
Comma Separated Numbers Regex
但是我不确定在特定情况下如何使用正则表达式。
(1个答案)
2年前关闭。
我需要加入一些表,我无法更改数据库,因为它正在多个不同的应用程序中使用。
第一个表如下所示
id, list_of_foreign_id
1, "1, 3, 4, 8, 12, 13, 14, 15, 16, 23"
2, "1, 3, 4, 8, 23"
3, "1, 3, 8, 12, 13, 14, 15, 23"
4, "7"
....
而forrening表只是简单地加入了ID,看起来可能如下所示
ID, name
1, "john Oliver"
2, "John Doe"
3, "Arthur Dent"
....
而且我需要将表中的ID列表匹配到表二中的ID。
该查询将看起来像以下内容,但我不确定联接条件
Select ...
from
A
join
B on a.list_of_foreign_id contains B.id
我认为可以使用正则表达式来完成。
我试过了locate,但它也可以匹配子字符串,例如1、3将匹配到13。等等。
我也环顾四周,发现了这篇文章,
Comma Separated Numbers Regex
但是我不确定在特定情况下如何使用正则表达式。
最佳答案
您可以使用find_in_set()
。
SELECT *
FROM A
INNER JOIN B
ON find_in_set(B.id, A.list_of_foreign_id);
关于mysql - 在连接时在MySQL中匹配逗号分隔的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51132866/