如何編寫 mysql 查詢語句以匹配兩個(gè)表中的特定類別?
在產(chǎn)品表和產(chǎn)品擴(kuò)展分類表中,產(chǎn)品可能具有多個(gè)擴(kuò)展分類。如何編寫查詢語句以獲取根據(jù)特定類別查找的產(chǎn)品,即使該產(chǎn)品沒有直接關(guān)聯(lián)到該類別也可以查找出來?
以下錯(cuò)誤查詢示例:
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
登錄后復(fù)制
正確的查詢語句如下:
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
登錄后復(fù)制
此查詢使用 left join 來匹配 t_product 和 t_product_category 表,并使用 or 條件來獲取符合 category_id 標(biāo)準(zhǔn)的記錄。即使該產(chǎn)品本身沒有直接關(guān)聯(lián)到該類別,也可以查找出具有擴(kuò)展分類的產(chǎn)品。