关于产品按分类搜索的,工作中遇到的,算是个坑,在此记录下,以备后用。

产品分类,通常是3级或无限级的,在查询时,要分别按1、2、3…级查询时,搜索时,需要有一字段存储层级关系。这样来方便,搜索某一级,而其下所有都可以展示出来。
类似的,区域筛选也可以按此进行。
如,

`region_category_ids` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属区域分类ID,多个用逗号分开' ,
`region_category_names` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '所属区域分类名称,多个用逗号分开' ,

使用 FIND_IN_SET() 或 IN() 函数即可实现搜索。不建议使用 LIKE 因为,存在分类为 1,13,23的关系,如果 LIKE ‘%3%’,结果将会是异常的。

另一种方式:

`region_code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '每3位为一层级' ,
`region_code_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '每3位为一层级' ,

第一级为 100,子级为 100100,第三级为 100100100,以此类推。
LIKE ‘100%’ 即可以查到所属所有子级信息。相关: