This topic created in 3943 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
 |
|
1
yangqi Jul 31, 2015
没看懂你要做什么,name/email有个选项是显示还是隐藏?为何?
|
 |
|
3
yangqi Jul 31, 2015 1
可能另外一个表要好点吧。既然是显示的,你之前的查询,搜索的逻辑没必要变,只要在输出客户端之前过滤一下就好了
当然你这样也没什么问题,就是把两个耦合在一起
|
 |
|
4
HivenYang Jul 31, 2015 1
听起来挺好的,你总要把用户的设置保存下来吧。把所有设置放到一个字段里如何,用json存起来(方便扩展,添加删除字段都不熟影响)。查询的时候都查出来,再根据用户设置看看显不显示
|
 |
|
6
phx13ye Jul 31, 2015
@ HivenYang 这样会把不公开的也查出来,不是吗? 不显示还应该包括不能查到他,不然一个啥都不显示的人会被查出来
|
 |
|
7
phx13ye 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);
|
 |
|
9
oott123 Aug 1, 2015 via Android 1
我觉得你一开始的想法没问题。
或者你也可以全部查出来,然后再到程序逻辑里去剔除隐藏的用户。
|
 |
|
10
Septembers Aug 1, 2015 1
我觉得应该吧权限信息放另外一张表 再做个视图inner join一下
|