如何用 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 标准的记录。即使该产品本身没有直接关联到该类别,也可以查找出具有扩展分类的产品。
以上就是如何用 MySQL 查询语句匹配两个表中特定类别,即使产品没有直接关联到该类别?的详细内容,更多请关注其它相关文章!