这个问题在这里已经有答案了:
mysql查询在逗号分隔的字符串中查找值(11个答案)
在数据库列中存储分隔列表真的那么糟糕吗(10个答案)
两年前关门了。
我有一个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的合作伙伴档案;我希望这个结果完全由查询或存储过程/函数生成。
我试过这样,但有个错误:
从id所在的表中选择id、名称、合作伙伴(从id=3的表中选择id);
我想要这样的输出:
ID | name | partner
-----------------------
5 E 3
7 G 3
3条答案
按热度按时间vlf7wbxs1#
一个规范化的模式可能像下面这样简单。。。
……但更可能的是,这将涉及到把合伙人分到一个单独的table上。
3mpgtkmj2#
至于你的
partner
字段是逗号分隔的字符串,其中包含您必须使用的ID函数FIND_IN_SET
,您的查询必须如下所示:pdsfdshx3#
在子查询中使用:
因此,您的查询变成:
但我想你需要:
结果是:
请注意,这是一个字符串,不能用于
IN
功能。所以你应该像其他人提到的那样,使用
find_in_set
像这样: