84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
额,大家好,首先感谢大家抽出时间看我的问题,可能描述不是很详细我来举个例子吧,比如会员设置了自己的爱好,爱好是复选框,值分别是1,2,3···分别代表足球、篮球等等PHP接收到的是数组,序列化之后再存到数据库,那用户在前台搜索同样爱好的会员,比如足球,怎么把数据表中有相同爱好的小伙伴查询出来呢?我当时面对这个需求的时候,就两个选项,所以查询A爱好的时候,把A的值序列化,然后用like去查询,但总感觉这样做不太妥当,两个还好弄,如果N多个呢
学习是最好的投资!
有查询需求你就不适合把这个东西用序列化的形式存储起来,另外建一个关联表,用你的例子来说的话是个爱好表,需要至少包括用户ID和爱好两个字段,搜索的时候去这个表来进行搜索,然后对用户ID进行去重得到你要的结果,再拿着这个结果去用户表进行select...in查询
你这样设计已经存在问题了。这个对应关系要三张表。第一张用户表(uid),uid作为关联字段第二张兴趣表(hobby),hobby_id作为关联字段第三张用户兴趣表(uid_hobby) 两个字段uid,hobby_id 就可以关联起来了。某个用户有哪几个爱好OK,你的需求是用户在前台搜索同样爱好的会员足球的ID是1所以如下语句。select uid from uid_hobby where hobby_id = 1 即可查询出所有喜欢足球的会员(包括自己)最后再建议 like 除了满足左前缀之外,其他都不会走索引,全表扫描+匹配,效率极低。
用户表(uid)
uid
兴趣表(hobby)
hobby_id
用户兴趣表(uid_hobby)
用户在前台搜索同样爱好的会员
select uid from uid_hobby where hobby_id = 1
like
mysql find_in_set
find_in_set
有查询需求你就不适合把这个东西用序列化的形式存储起来,另外建一个关联表,用你的例子来说的话是个爱好表,需要至少包括用户ID和爱好两个字段,搜索的时候去这个表来进行搜索,然后对用户ID进行去重得到你要的结果,再拿着这个结果去用户表进行select...in查询
你这样设计已经存在问题了。这个对应关系要三张表。
第一张
用户表(uid)
,uid
作为关联字段第二张
兴趣表(hobby)
,hobby_id
作为关联字段第三张
用户兴趣表(uid_hobby)
两个字段uid,hobby_id 就可以关联起来了。某个用户有哪几个爱好OK,你的需求是
用户在前台搜索同样爱好的会员
足球的ID是1
所以如下语句。
select uid from uid_hobby where hobby_id = 1
即可查询出所有喜欢足球的会员(包括自己)最后再建议
like
除了满足左前缀之外,其他都不会走索引,全表扫描+匹配,效率极低。mysql
find_in_set