最近遇到一个神奇的需求,分享一下。
表A(工具使用记录):
关键字段 :uids(用于存储用过该工具的uid)
数据存储类型为:1,2,3,4 (字符串类型通过逗号隔开的uid列表)
表B(用户表):
关键字段 :uid(用户id)
数据存储类型为:1 (int型)
可了解到表A与表B属于,多对一的情况。
且表B与表A的关联都存储于表A的uids字段,无额外关联表。
现需求,查询出表B用户列表中,每个用户所使用过的工具。
原先思路:
先查询表B用户数据,再整合出uid列表,再通过 in()查出对应的工具,或者通过left join连表查询。
SELECT * FROM a WHERE uids in (1,2,3,4)
这样可以查询出表B筛选出的用户所使用过的工具,再一一匹配过去。
结果发现因为表Auids存储类型为字符串,所以in查询无解了,left join也无解了。
解决方案:
SELECT * FROM a WHERE uids RLIKE '1|2|3|4';
mysql 如何执行我的SQL LIKE%来搜索我的数组中的单词
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com