【MySQL】RLIKE使用方法

最近遇到一个神奇的需求,分享一下。

表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%来搜索我的数组中的单词

猿教程
请先登录后发表评论
  • 最新评论
  • 总共0条评论