如何编写 mysql 查询以查找产品扩展分类
在讨论 mysql 查询的编写方法之前,让我们先回顾一下问题。我们需要从两个表(t_product 和 t_product_category)中查找产品,这些表通过 product_id 和 category_id 列关联。
解决方案
要找到满足条件的产品,我们可以使用以下查询:
SELECT p.* FROM t_product AS p LEFT JOIN t_product_category AS pc ON p.product_id = pc.product_id WHERE p.category_id IN (1,2) OR pc.category_id IN (1,2) GROUP BY p.product_id ORDER BY p.seq ASC, p.product_id DESC LIMIT 0, 20
登录后复制
让我们拆解一下查询:
- left join 根据 product_id 列将 t_product 和 t_product_category 表连接起来。这允许我们查询这两个表中的数据,即使 t_product 中不存在 category_id。
- where 子句指定了查询条件。我们使用 in 操作符检查 p.category_id 或 pc.category_id 是否与给定的 category_id(1 和 2)匹配。
- group by p.product_id 将具有相同 product_id 的行分组在一起。
- order by p.seq asc, p.product_id desc 对结果按 seq 列升序排序,然后按 product_id 列降序排序。
- limit 0, 20 从结果集中返回前 20 行。