我有一个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的合作伙伴的个人资料; 我希望这个结果纯粹由查询或存储过程/函数生成。
我试过这样,但得到了错误:
从表WHERE id IN中选择id,name,partner(SELECT id FROM table WHERE id = 3);
我想要这样的输出:
ID | name | partner
-----------------------
5 E 3
7 G 3
答案 0 :(得分:0)
在您的子查询中,您使用:
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;
答案 1 :(得分:0)
至于您的partner
字段是包含ID的逗号分隔字符串,您必须使用函数FIND_IN_SET
,并且您的查询必须如下所示:
SELECT id, name, partner from table WHERE FIND_IN_SET(id, partner) > 0
答案 2 :(得分:0)
规范化架构可能与以下内容一样简单......
ID | name | partner
-----------------------
1 A 2
2 B 1
3 C 5
3 C 7
4 D 6
4 D 8
5 E 3
6 F 4
7 G 3
8 H 4
......但更可能的是,它会将合作伙伴分成一个单独的表格。