我有我的數據庫三個表:的MySQL選擇其中但不與加入
產品
- ID(INT,主鍵)
- 名(爲varchar)
標籤
- ID(INT,主鍵)
- 名稱(VARCHAR)
ProductTags
- PRODUCT_ID(INT)
- TAG_ID(INT)
我正在執行SQL查詢以選擇具有給定ID的分配標籤的產品:
SELECT * FROM Products
JOIN ProductTags ON Products.id = ProductTags.product_id
WHERE ProductTags.tag_id IN (1,2,3)
GROUP BY Products.id
我既可以選擇無產品標籤的分配具有給定的ID:
SELECT * FROM Products
JOIN ProductTags ON Products.id = ProductTags.product_id
WHERE ProductTags.tag_id NOT IN (4,5,6)
GROUP BY Products.id
我怎麼能結合具有給定的標籤,但沒有其他標記的查詢選擇產品?我試圖做到這一點這樣:
SELECT * FROM Products
JOIN ProductTags ON Products.id = ProductTags.product_id
WHERE ProductTags.tag_id IN (1,2,3)
AND ProductTags.tag_id NOT IN (4,5,6)
GROUP BY Products.id
但它沒有明顯的工作,給我的產品標籤(1,2,3),不管他們有標籤(4,5,6)指派或不。這可能使用一個查詢來解決這個問題嗎?
第二查詢返回除了那些標記有隻有4,5或6。所有產品舉例來說,如果一個產品標記2和5,它將包含在查詢中。因此,組合第一個和第二個查詢是毫無意義的,因爲第一個查詢包含的任何產品都不會被第二個查詢排除。 – Guffa