怎么判断mysql里某的字段是否包含特定的值并且count

如下表

id | tag | time |
| —- | —- | —-|
| 1 | 2,4,5,| 2022 |
| 2 | 3,6,7 | 2022 |
| 3| 23,4,7 | 2022 |

怎么count出tag里包含3的数据,用like会不会把23也算进去

自问自答:whereRaw("FIND_IN_SET($tag_id, `tag_id`)")
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

最简单且最笨的方法,结构做成这样 ,1,2,3,4,5,6,78,7,8,23,32,34,43 你直接模糊搜索 ,4, 最简单且不用最不用消耗脑力的做法,但是还是建议做关联表。

3年前 评论

用正则去匹配

SELECT count(tag) FROM tags WHERE tag REGEXP '(^3$|^3[,]|[,]3$|[,]3[,])'

这样会导致全表扫描

3年前 评论

SELECT count(tag) FROM tags WHERE FIND_IN_SET($tag_id,ist);

3年前 评论

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