簡體   English   中英

SQL - 僅在具有一個或多個選項的表上選擇具有一個結果的行 - 關系表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM