mysql 查詢尋找包含特定類目的產品
給定兩個表:產品表 t_product 和產品擴展分類表 t_product_category。其中 t_product 表包含字段 product_id、category_id、title 和 seq,而 t_product_category 表包含字段 product_id 和 category_id。
任務是根據指定的 category_id 查找產品。如果相關產品在 t_product 表中找不到,則需要在 t_product_category 表中搜索。
查詢語句:
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 表連接,以查找具有指定 category_id 的產品,或在 t_product_category 表中具有擴展類目的產品。
- where 子句檢查 t_product 表的 category_id 是否匹配給定的 category_id(1 或 2),或 t_product_category 表的 category_id 是否匹配給定的 category_id(1 或 2)。
- group by 子句根據產品 id 對結果進行分組,以確保每個產品只出現一次。
- order by 子句按 seq 升序和 product_id 降序對結果進行排序。
- limit 0, 20 子句限制返回的前 20 條結果。