如何編寫 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 標準的記錄。即使該產品本身沒有直接關聯到該類別,也可以查找出具有擴展分類的產品。