MySQL 查询语句要怎么写?

作者站长头像
站长
· 阅读数 7

产品表 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 , 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

回复
1个回答
avatar
test
2024-07-01
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
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容