我有一個表結構如下:SQL查詢比較不同行中的值
| product_id | category_id |
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |
| 3 | 4 |
所以:
- 製品1是在第1類和2
- 製品2是第1類,2和3
- 產品3處於類別1,2,3和4中
- 等等
我如何構造一個SQL查詢,可以檢索屬於product_ids列表:
- 類別4
- 或類別2而不是3類或4
- 或類別1,但不第2類
我曾嘗試:
SELECT *
FROM `catalog_category_product`
WHERE category_id = 1
OR (category_id = 2 AND category_id NOT IN (3,4))
OR (category_id = 1 AND category_id NOT IN (2,3))
GROUP BY product_id
......但這並不像希望的那樣工作。
在此先感謝非常
薩拉
您需要將表加入自身,並針對表的第二個實例檢查第一個實例的第2類條件和「但不是第3或第4類」。 – axiac