i have 2 tables (example):
product:
| id | name |
| 1 | product1 |
| 2 | product2 |
| 3 | product3 |
product_categories:
| product_id | category_id |
| 1 | 5 |
| 1 | 3 |
| 2 | 5 |
| 3 | 17 |
| 3 | 5 |
我想选择类别ID为5和3的那些产品。
SELECT p.*
FROM products p
LEFT
JOIN product_categories pc
ON pc.product_id = p.id
WHERE ?
最佳答案
没有必要使用LEFT JOIN
,因为您不希望出现不匹配的行。
按产品分组并在HAVING
子句中将产品设置为具有两个类别的条件:
SELECT p.id, p.name
FROM products p INNER JOIN product_categories pc
ON pc.product_id = p.id
WHERE pc.category_id IN (3, 5)
GROUP BY p.id, p.name
HAVING COUNT(DISTINCT pc.category_id) = 2
关于mysql - MySQL从联接表那里,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58437265/