篮球、羽毛球、兵乓球、足球、滑板、滑旱冰、跑步、跳绳 有这八个兴趣存在字典表里,字典code是1~8
用户A喜欢:1、5、7、8
用户B喜欢:1、3、5
用户C喜欢:2、4、6
用户D喜欢:2、5、6、8
用户E喜欢:3、5、8
要求:
查询喜欢 7 的所有用户
查询喜欢1和5的所有用户
按照位运算要求数据库存储字段值为:code的平方根相加的和
1:2
2:4
3:8
4:16
5:32
6:64
7:128
8:256
用户A:1、5、7、8 = 418
用户B:1、3、5 = 42
用户C:2、4、6 = 84
用户D:2、5、6、8 = 356
用户E:3、5、8 = 296
select 418&pow(2,1)=pow(2,1) true
select 418&pow(2,2)=pow(2,2) false
select 418&pow(2,3)=pow(2,3) false
select 418&pow(2,4)=pow(2,4) false
select 418&pow(2,5)=pow(2,5) true
select 418&pow(2,6)=pow(2,6) false
select 418&pow(2,7)=pow(2,7) true
select 418&pow(2,8)=pow(2,8) true
pow() 最好别要数据库去算,由后台代码去算好
比用like %7% %1%5% 要强百倍,而且也可能存储顺序不一定是有序的 还得 %5%1% 如果三呢...
转载请标明出处,谢谢