MySQL 根据一个值查询数据表中某个字段包含某个数值 | find_in_set()
一、业务描述
我有一个表结构,其中一个字段是多选的情况,所以使用多的一方表的ID用","逗号拼接起来存进这个字段,如下图所示:(每个字段里都是其他表的主键ID)
现在需要根据多的一方表中的某个ID去查询包含这个ID 的数据,如以上三个字段,都是一对多,包含其他表的ID,然后我根据 certification_id 和 patent_id 去查询
二、FIND_IN_SET(str,strList) 函数的语法
- str 要查询的字符串
- strList 字段名,参数以“,”分隔,如(1,2,6,8)
- 查询字段(strList)中包含的结果,返回结果null或记录。
三、测试(在真实sql查询中匹配到则有数据返回,没匹配到则不返回)
- 3.1 匹配到则返回相应的下标(下标从1开始):
- 3.2 没匹配到则返回0:
四、实例
4.1 数据库中的数据
4.2 以certification_id 的 1和4 、patent_id 的 2 去查询,同时匹配到则返回数据
五、扩展
5.1 中文存入其中也可以进行,字符串都行
5.2 在 mybatis 的 xml 中使用示例(根据需求改动):
欢迎关注公众号:慌途L
后面会慢慢将文章迁移至公众号,也是方便在没有电脑的情况下可以进行翻阅,更新的话会两边同时更新,大家不用担心!