您可以使用 FIND_IN_SET 进行 JOIN,或者您可以连接整数表并将其与 Substring_index 一起使用以从 CSV 字符串中获取值
通常,数据库中的逗号分隔列表是设计不佳的标志。最好将它们拆分到另一个表中,逗号分隔列表中的每个项目都有一行。
编辑 - 如何使用整数表的示例: -
SELECT name,id
FROM users a
INNER JOIN (SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(concat(Connection, ','), ',', aCnt), ',', -1) AS aConnection
FROM Connections
CROSS JOIN (
SELECT a.i+b.i*10+c.i*100 + 1 AS aCnt
FROM integers a, integers b, integers c) Sub1
WHERE (LENGTH(Connection) + 1 - LENGTH(REPLACE(Connection, ',', ''))) >= aCnt) Sub2
ON a.username = Sub2.aConnection
这依赖于一个名为 integers 的表,其中有一列名为 i,有 10 行,值为 0 到 9。您可以将其与自身交叉连接以获得一系列数字。在这种情况下,从 0 到 999,然后受要拆分的字段中的逗号数量限制。然后使用此值查找 SUBSTRING_INDEX 的逗号以拆分字符串。