› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
phx13ye
V2EX  ›  MySQL

mysql guru 们, 可以显示 or 隐藏的字段应该怎么设计?

  •  
  •   phx13ye ·
    Alwayswithme · Jul 31, 2015 · 4614 views
    This topic created in 4073 days ago, the information mentioned may be changed or developed.
    目前想法
    id INT
    name VARCHAR(10)
    email VARCHAR(10)
    display_name TINYINT(1)
    dispaly_email TINYINT(1)

    查询时where语句大概是
    WHERE
    (name LIKE %keyword% AND display_name = TRUE)
    OR
    (email LIKE %keyword% AND display_email = TRUE)

    还有更好的方法吗
    11 replies  •  2015-08-05 12:33:04 +08:00
    yangqi
        1
    yangqi  
       Jul 31, 2015
    没看懂你要做什么,name/email有个选项是显示还是隐藏?为何?
    phx13ye
        2
    phx13ye  
    OP
       Jul 31, 2015
    @yangqi 是的,可以公开或不公开,然后要保证模糊查询只能从公开的信息匹配
    yangqi
        3
    yangqi  
       Jul 31, 2015   ❤️ 1
    可能另外一个表要好点吧。既然是显示的,你之前的查询,搜索的逻辑没必要变,只要在输出客户端之前过滤一下就好了

    当然你这样也没什么问题,就是把两个耦合在一起
    HivenYang
        4
    HivenYang  
       Jul 31, 2015   ❤️ 1
    听起来挺好的,你总要把用户的设置保存下来吧。把所有设置放到一个字段里如何,用json存起来(方便扩展,添加删除字段都不熟影响)。查询的时候都查出来,再根据用户设置看看显不显示
    phx13ye
        5
    phx13ye  
    OP
       Jul 31, 2015
    @yangqi 这些开关到时是join起来的
    phx13ye
        6
    phx13ye  
    OP
       Jul 31, 2015
    @HivenYang 这样会把不公开的也查出来,不是吗?
    不显示还应该包括不能查到他,不然一个啥都不显示的人会被查出来
    phx13ye
        7
    phx13ye  
    OP
       Aug 1, 2015
    哈,貌似解决了查询和过滤的问题
    SELECT
    id,
    IF (display_email, phone, '---') AS email,
    IF (display_name, name, '---') AS name
    FROM table
    WHERE
    (name REGEXP 'keyword' AND display_name = 1)
    OR (email REGEXP 'keyword' AND display_email = 1);
    phx13ye
        8
    phx13ye  
    OP
       Aug 1, 2015
    用不上索引:(
    oott123
        9
    oott123  
       Aug 1, 2015 via Android   ❤️ 1
    我觉得你一开始的想法没问题。

    或者你也可以全部查出来,然后再到程序逻辑里去剔除隐藏的用户。
    Septembers
        10
    Septembers  
       Aug 1, 2015   ❤️ 1
    我觉得应该吧权限信息放另外一张表
    再做个视图inner join一下
    HivenYang
        11
    HivenYang  
       Aug 5, 2015
    @phx13ye 我是想在代码逻辑里做过滤,会把数据查出来,再逻辑层过滤一次。你的做法是直接通过sql解决。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2436 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 489ms · UTC 04:17 · PVG 12:17 · LAX 21:17 · JFK 00:17
    ♥ Do have faith in what you're doing.