我有一个 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') 否 是