首页 > 解决方案 > Mysql WHERE IN 逗号分隔

问题描述

我有一个 Mysql/MariaDb 表

ID  | name | partner
-----------------------
1     A      2
2     B      1
3     C      5,7
4     D      6,8
5     E      3
6     F      4
7     G      3
8     H      4

如何 mysql 查询以搜索 id = 3 的合作伙伴的个人资料;我希望这个结果完全由查询或存储过程/函数生成。

我试过这样,但得到了错误:

SELECT id, name, partner from table WHERE id IN (SELECT id FROM table WHERE id=3);

我想要这样的输出:

ID  | name | partner
-----------------------
5     E      3
7     G      3

标签: mysqlmariadb

解决方案


在您的子查询中,您使用:

SELECT id FROM table WHERE id=3

所以你的查询变成:

SELECT id, name, partner from table WHERE id IN (3);

但我想你需要:

SELECT partner FROM table WHERE id=3

结果是:

SELECT id, name, partner from table WHERE id IN ('5,7');

请注意,这是一个字符串,不能在IN函数中使用。

因此,正如其他人所提到的,您应该find_in_set像这样使用:

SELECT id, partner from docs WHERE FIND_IN_SET (3, partner) > 0;

推荐阅读