在连接时在MySQL中匹配逗号分隔的值

时间:2018-07-02 09:25:44

标签: mysql regex

我需要连接一些表,因为在多个不同的应用程序中使用了数据库,所以我无法更改数据库。

第一个表格如下所示

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 但是我不确定在特定情况下如何使用正则表达式。

1 个答案:

答案 0 :(得分:1)

您可以使用find_in_set()

SELECT *
       FROM A
            INNER JOIN B
                       ON find_in_set(B.id, A.list_of_foreign_id);