MySQL/MariaDB如何查询ID为3的合作伙伴的档案?
解决MySQL/MariaDB中查找指定合作伙伴用户的问题
首先得说,你原来写的查询逻辑完全不对哦!子查询SELECT id FROM table WHERE id=3只会返回ID为3的那条记录,所以主查询最终只会选出ID=3的数据,这和你想要的结果差了十万八千里。
你的需求是找合作伙伴ID为3的用户档案,也就是那些把3列为自己合作伙伴的用户(对应表中partner字段值为3的记录,就是ID5和7那两条)。下面给你两种对应的解决方案:
方案1:当partner仅存单个ID时
如果你的partner字段每次只存储一个合作伙伴ID(像ID5、7的情况),直接用等于判断就可以:
SELECT id, name, partner FROM your_table WHERE partner = '3';
记得把your_table替换成你实际的表名,因为partner是字符串类型,所以要给3加上单引号。
方案2:当partner存多个逗号分隔的ID时
如果有的用户有多个合作伙伴(比如ID3的partner是5,7),想要找出所有把3作为合作伙伴之一的用户,就得用MySQL自带的FIND_IN_SET函数——它专门用来在逗号分隔的字符串里查找指定值:
SELECT id, name, partner FROM your_table WHERE FIND_IN_SET('3', partner) > 0;
这个函数会返回目标值在字符串中的位置,返回值大于0就说明找到了匹配的记录。
执行上面的查询后,就能得到你期望的结果:
ID | name | partner ----------------------- 5 | E | 3 7 | G | 3
最后提个小建议:其实用逗号分隔的方式存储多个ID并不符合数据库的规范化设计,长期来看,最好拆成一个单独的关联表(比如命名为user_partners,包含user_id和partner_id两个字段),这样后续的查询、更新都会更高效,也更容易维护。
内容的提问来源于stack exchange,提问作者Envy
相关产品推荐
相关产品推荐

