[英]SQL - Select only rows with one result on table with one or multiple options - Relation Table
我有一張表,其中包含產品和顏色的關系。 每個產品都有一種或多種顏色。 是否可以執行僅返回只有一種顏色的產品的查詢?
示例表:
+----+------------+----------+
| ID | product_id | color_id |
+----+------------+----------+
| 1 | 1 | 5 |
| 2 | 2 | 2 |
| 3 | 3 | 1 |
| 4 | 3 | 4 |
| 5 | 3 | 8 |
| 6 | 4 | 2 |
| 7 | 4 | 3 |
| 8 | 5 | 5 |
| 9 | 6 | 7 |
| 10 | 6 | 4 |
+----+------------+----------+
我希望只返回 ids : 1 , 2 , 8 。 (product_id : 1 , 2 , 5 )
*所有值(組合)都是唯一的。 我不能有兩種顏色相同的產品 (color_id)。
只需使用having
:
select product_id, max(color_id)
from t
group by product_id
having count(*) = 1;
SELECT product_id
FROM table
GROUP BY product_id
HAVING MIN(color_id) = MAX(color_id)
即使(product_id, color_id)
未定義為 UNIQUE 也能正常工作。
select product_id, count(color_id) from table
group by product_id
having count(color_id) = 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.