V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellohacker
V2EX  ›  程序员

一个 mysql 条件判断的问题

  •  
  •   hellohacker · 2014-03-13 19:56:14 +08:00 · 3582 次点击
    这是一个创建于 3690 天前的主题,其中的信息可能已经有所发展或是发生改变。
    给一篇文章分配标签的时候,记录的是标签的value值,格式如1,2,3,4 ,代表该文章含有属性1,属性2,属性3和属性4.

    在前台通过tag的值筛选属性的时候,比如 选择 4,怎么才能把含有属性4的文章筛选出来呢?
    9 条回复    1970-01-01 08:00:00 +08:00
    zerosyn
        1
    zerosyn  
       2014-03-13 20:34:07 +08:00   ❤️ 1
    FIND_IN_SET
    abstractwang
        2
    abstractwang  
       2014-03-13 20:50:49 +08:00
    把标签的属性分别设置为 2^0 2^1 2^2等等 存储或的值 然后的时候与出来就行了
    hellohacker
        3
    hellohacker  
    OP
       2014-03-13 21:05:36 +08:00
    @zerosyn 谢谢 问题按照你给我的方法已经解决
    Ever
        4
    Ever  
       2014-03-13 21:06:28 +08:00
    如果我没理解错, 你是把一组标签当成一个字符窜存在一列里? 这种存法查询用到函数用不了索引, 直接扫的全表, 数据一大跑挂db. 还是改成比较传统的m2m, 或者把查询交给mysql外的第三方搜索组件实现.
    abstractwang
        5
    abstractwang  
       2014-03-13 21:24:57 +08:00
    @Ever 嗯,这样没法用到索引,但是像楼主说的只有几个标签,区分度不大,用了索引效果也不大。
    abstractwang
        6
    abstractwang  
       2014-03-13 21:32:50 +08:00
    @Ever 我不应该去猜测只有几个标签。。。 so 还是不要用 “与” 的方式了。。。
    vibbow
        7
    vibbow  
       2014-03-13 22:06:56 +08:00   ❤️ 1
    两个表
    第一个表建立 文章->Tag 的关系
    第二个表建立 Tag->文章 的关系
    evefree2
        8
    evefree2  
       2014-03-13 22:24:51 +08:00
    用cache整理一份供前端用吧,不要直接检索
    diseng1991
        9
    diseng1991  
       2014-03-15 10:22:15 +08:00
    find_in_set 好东西 学习了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2681 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:22 · PVG 19:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.