一个 mysql 条件判断的问题

2014-03-13 19:56:14 +08:00
 hellohacker
给一篇文章分配标签的时候,记录的是标签的value值,格式如1,2,3,4 ,代表该文章含有属性1,属性2,属性3和属性4.

在前台通过tag的值筛选属性的时候,比如 选择 4,怎么才能把含有属性4的文章筛选出来呢?
3591 次点击
所在节点    程序员
9 条回复
zerosyn
2014-03-13 20:34:07 +08:00
FIND_IN_SET
abstractwang
2014-03-13 20:50:49 +08:00
把标签的属性分别设置为 2^0 2^1 2^2等等 存储或的值 然后的时候与出来就行了
hellohacker
2014-03-13 21:05:36 +08:00
@zerosyn 谢谢 问题按照你给我的方法已经解决
Ever
2014-03-13 21:06:28 +08:00
如果我没理解错, 你是把一组标签当成一个字符窜存在一列里? 这种存法查询用到函数用不了索引, 直接扫的全表, 数据一大跑挂db. 还是改成比较传统的m2m, 或者把查询交给mysql外的第三方搜索组件实现.
abstractwang
2014-03-13 21:24:57 +08:00
@Ever 嗯,这样没法用到索引,但是像楼主说的只有几个标签,区分度不大,用了索引效果也不大。
abstractwang
2014-03-13 21:32:50 +08:00
@Ever 我不应该去猜测只有几个标签。。。 so 还是不要用 “与” 的方式了。。。
vibbow
2014-03-13 22:06:56 +08:00
两个表
第一个表建立 文章->Tag 的关系
第二个表建立 Tag->文章 的关系
evefree2
2014-03-13 22:24:51 +08:00
用cache整理一份供前端用吧,不要直接检索
diseng1991
2014-03-15 10:22:15 +08:00
find_in_set 好东西 学习了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/104194

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX