我有一个 MySQL 查询来选择所有产品 ID,并将某些过滤器应用于产品。此查询有效,但我想学习改进此查询。欢迎使用此查询的替代方案并提供解释。
选择 kkx_products.id 从 kkx_products WHERE display = 'yes' AND id in (从`kkx_filters_products`中选择product_id,其中`filter_id`在 (从 `kkx_filters` 中选择 id,其中 kkx_filters.urlname = "comics" 或 kkx_filters.urlname = "comicsgraphicnovels") 按具有 count(*) = 2) 的 product_id 分组 ORDER BY kkx_products.id desc LIMIT 0, 24
我已经包含了查询中使用的表的结构。
解释kkx_filters
;
字段类型 Null Key 默认 Extra id int(11) 无符号 NO PRI NULL auto_increment 名称 varchar(50) 否 filtergroup_id int(11) 是 MUL NULL urlname varchar(50) NO MUL NULL date_modified 时间戳 NO CURRENT_TIMESTAMP orderid float(11,2) 无 NULL
解释kkx_filters_products
;
字段类型 Null Key 默认 Extra filter_id int(11) 无优先级 0 product_id int(11) 无优先级 0
解释kkx_products
;
字段类型 Null Key 默认 Extra id int(11) NO PRI NULL auto_increment 标题 varchar(255) 否 urlname varchar(50) NO MUL 描述长文本 NO NULL 价格浮动(11,2)NO NULL orderid float(11,2) 无 NULL imageurl varchar(255) 否 date_created 日期时间 NO NULL date_modified 时间戳 NO CURRENT_TIMESTAMP created_by varchar(11) NO NULL modified_by varchar(11) NO NULL 产品编号 varchar(32) 否 库存枚举('是','否')否是 显示枚举('yes','no') 否 是