1
2
3
4
5
6
7
8
9
| 数据库中 user表有字段userLevel标识用户等级
1 普通用户
2 高级用户
3 vip用户
4 管理员
5 开发人员
另一张公告表A,发布公告时,需要指定类型的用户能看到,如只给管理员发公告,或者 只给 普通用户,高级用户发公告,其他人看不到
|
1
2
3
4
5
6
7
8
| 0 0 0 0 0 0 0 1 == 普通用户
0 0 0 0 0 0 1 0 == 高级用户
0 0 0 0 0 1 0 0 == vip用户
0 0 0 0 1 0 0 0 == 管理员
0 0 0 1 0 0 0 0 == 开发人员
0 0 0 0 0 0 1 1 == 普通用户 + 高级用户
0 0 0 0 1 0 1 0 == 高级用户 + 管理员
|
1
2
| 每种等级的用户占用一个32位int类型的一位,当发公告时,按位存储能看到该公告人的等级,如:
想要 普通用户和高级用户看到 存储 (1<<0) & (1<<2) 即 0b01 & 0b10 = 0b11 = 3,这个3标识了普通用户和高级用户
|
1
| 这样的sql就能查询到所有包含普通用户的公告了。
|
1
2
3
4
| select 1&1
select 1&2
select 1&3
select 4&6
|