如何使用 SQL 语句实现商品过滤?

mysql 数据库:商品表的设计,分为主表和扩展表

主表主要记录商品的通用信息,比如标题,价格,长宽高等:

CREATE TABLE `product` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `status` tinyint(3) NOT NULL DEFAULT '0',
  `type` tinyint(3) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

附表主要记录商品的属性或其他扩展信息:

CREATE TABLE `product_meta` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `pruduct_id` bigint(11) NOT NULL,
  `meta_key` varchar(255) NOT NULL DEFAULT '',
  `meta_value` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品属性表';

但是这样的表,在商品过滤的时候,被sql难住了,比如某个分类下,有颜色,大小,尺寸,材质等属性,请问:

1、这样的sql语句怎么写?
2、有没有更好的表设计方案,过滤查询的sql样的?

阅读 1.6k
1 个回答

一般过于复杂的筛选,都会考虑一些专门的搜索引擎,比如 ES。

另外,对于你这个表的设计,不是很行,如果按照这样设计,后续 meta 表的体积会可能会是 product 的 N 倍,而且介于存储的数据由比较杂,不变检索,甚至效率更低了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题