Hello! 欢迎来到小浪云!


如何用 MySQL 查询语句匹配两个表中特定类别,即使产品没有直接关联到该类别?


avatar
小浪云 2024-11-08 44

如何用 MySQL 查询语句匹配两个表中特定类别,即使产品没有直接关联到该类别?

如何编写 mysql 查询语句以匹配两个表中的特定类别?

在产品表和产品扩展分类表中,产品可能具有多个扩展分类。如何编写查询语句以获取根据特定类别查找的产品,即使该产品没有直接关联到该类别也可以查找出来?

以下错误查询示例:

select p.* from t_product as p , t_product_category as pc where ( p.category_id in ( 1,2 ) or ( p.product_id = pc.product_id and pc.category_id in ( 1,2 ) ) ) group by p.product_id order by p.seq asc, p.product_id desc limit 0, 20
登录后复制

正确的查询语句如下:

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 来匹配 t_product 和 t_product_category 表,并使用 or 条件来获取符合 category_id 标准的记录。即使该产品本身没有直接关联到该类别,也可以查找出具有扩展分类的产品。

相关阅读