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