mysql - 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
解决方案
在您的子查询中,您使用:
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;
推荐阅读
- react-native - 不变违规:元素类型无效:预期使用 react-redux 连接的字符串
- python - 如何使用下划线访问库中的函数?
- c - 解码后的 shellcode 不执行:非法指令:4
- r - 为什么我的时差不能基于 if 函数在 for 循环中工作?
- javascript - 使用可以恢复丢失事件的 RxJS 轮询
- traefik - 是否可以让 Traefik 处理多个证书/域
- python - 为什么这两个约束导致我的 LP 模型在 Gurobi 中不可行?
- mysql - 为什么在 JOIN USING 子句中使用括号
- r - PCA 是否为我们提供了从最重要到次要的特征的有序列表?
- c++ - 为什么打开 code::blocks exe 文件时出现错误?