请教一个mysql查询语句!!

谢谢大家,就此结贴了!
长痛不如短痛,准备拆分了。
.

想通常过sql语句,一次性查询出满足条件上的所有记录id
即:查询col_a中含有3,4,5中任意一个以逗号分隔的字符的记录。

有点像 find_in_set('3,5', col_a) 但这个查询不出来。

预期效果:[1,2,3]

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 15
thebestxt

这种我们存的时候会首尾都加逗号,然后like 就可以了

2年前 评论

@thebestxt

大佬说的是这种吗?

SELECT * FROM table WHERE CONCAT(",",str_col,",") LIKE "%,str,%"

这样好像也不行,因为 str作为一个整体字符串进行检索了,不能一次性查询出所要的结果来。 :grinning:

2年前 评论

联合查询行么

2年前 评论
liziyu (楼主) 2年前
SELECT * FROM table 
WHERE 
find_in_set('3', col_a) 
OR find_in_set('4', col_a) 
OR find_in_set('5', col_a);
2年前 评论
liziyu (楼主) 2年前
pi_phq 2年前
skys215 (作者) 2年前

早日拆表,否则后面更麻烦

2年前 评论
liziyu (楼主) 2年前

我也是这么存储的,但是我是将其同步到ES,然后在ES中执行的查询

2年前 评论
thebestxt

@liziyu 大致是这个意思了。 通常我们在存数据的时候会在首位都存上逗号,而不是在查询的时候加。 查询的时候可以用 ... like '%,3,%' or like '%,4,%' or like '%,5,%' 效率肯定不是很高就是了

不过话说回来,这种需求还是尽早拆成子表。

2年前 评论

file

前两天有类型需求, 不过我是 json 字段存的数组, 可以先动态生成 sql 语句再查询

2年前 评论

explode(',', 'col_a'), [3,4,5], diff

2年前 评论
陈先生

存进去的时候就要首位加上都好

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!