如图 b_leibie 字段存储 的是菜单id 比如 有的存了 4,0,2 三个菜单Id 有的只存一个Id 现在
比如我要查 菜单id为0 在表中的数据 sql怎么写尼 如果图中的表名是 busi 表
原生的或者thinkPHp的写法都可以 谢谢
如图 b_leibie 字段存储 的是菜单id 比如 有的存了 4,0,2 三个菜单Id 有的只存一个Id 现在
比如我要查 菜单id为0 在表中的数据 sql怎么写尼 如果图中的表名是 busi 表
原生的或者thinkPHp的写法都可以 谢谢
根据mysql手册中find_in_set函数的语法: FIND_IN_SET(str,strlist)
select * from article where FIND_IN_SET('0',b_leibie)
FIND_IN_SET:
WHERE FIND_IN_SET('0', `b_leibie`);
或者
FullText Search:
WHERE MATCH(`b_leibie`) AGAINST('+0' IN BOOLEAN MODE);
要求字段上创建了 FULLTEXT KEY 索引.
要求配置 innodb_ft_min_token_size=1 关键词索引的最小长度为1.
SELECT * FROM busi WHERE b_leibie LIKE '0,%' OR b_leibie LIKE '%,0,%' OR b_leibie LIKE '%,0' OR b_leibie = '0';
这样查没法走索引,建议还是再建一张表来关联菜单ID和文章ID吧。
如果不能单独存到一张表里的话 建议 把4 存成 ‘,4,’.然后查询的时候
D()->where(['b_leibie'=>['like'=>',4,']])->select();
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
方法一、
方法二、
另:TP也可以跑原生SQL的。