如何編寫 mysql 查詢以查找產品擴展分類
在討論 mysql 查詢的編寫方法之前,讓我們先回顧一下問題。我們需要從兩個表(t_product 和 t_product_category)中查找產品,這些表通過 product_id 和 category_id 列關聯。
解決方案
要找到滿足條件的產品,我們可以使用以下查詢:
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 根據 product_id 列將 t_product 和 t_product_category 表連接起來。這允許我們查詢這兩個表中的數據,即使 t_product 中不存在 category_id。
- where 子句指定了查詢條件。我們使用 in 操作符檢查 p.category_id 或 pc.category_id 是否與給定的 category_id(1 和 2)匹配。
- group by p.product_id 將具有相同 product_id 的行分組在一起。
- order by p.seq asc, p.product_id desc 對結果按 seq 列升序排序,然后按 product_id 列降序排序。
- limit 0, 20 從結果集中返回前 20 行。