我有一個包含3 個 ID 的“統計資訊”表。
ID: id_seller、id_part 和 id_proj
從這張表中,我想找到購買特定零件 ( id_part ) 的專案 ( id_proj ),這些零件只能從一個賣家處獲得。
換句話說: 找到 id_proj,它購買 id_parts,它們只能從一個賣家那里獲得(賣家 S5 是唯一銷售 P2 的賣家)。

所以,在這個例子中id_part (P2)是唯一的部分 id,這是特定的,它只賣給id_seller (S5)。
回傳應為:J2、J4
我試過這樣的事情:
SELECT DISTINCT s.id_proj
FROM stats s
WHERE NOT id_part IN (
SELECT s2.id_part
FROM stats s2
WHERE s2.id_seller = 'S5');
uj5u.com熱心網友回復:
Group By與 一起使用Having。按id_part 分組并選擇有賣家的作品。
然后join將結果到主表中以獲取您需要的資訊。
SELECT s2.*
FROM
(SELECT id_part,max(id_seller) AS id_seller
FROM stats
GROUP BY id_part
HAVING COUNT(DISTINCT id_seller) = 1) s1
JOIN stats s2 ON s1.id_part = s2.id_part AND s1.id_seller = s2.id_seller
uj5u.com熱心網友回復:
select distinct id_proj from stats
where id_part in
(SELECT s.id_part
FROM stats s
WHERE s.id_seller = 'S5'
and id_part not in (select id_part from stats where id_seller <> 'S5') --**this take only part from seller S5**
)
如果這是家庭作業,盡管您應該真正理解 IN 和 NOT IN 的概念,如本執行緒、EXIST 和 NOT EXIST。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359837.html
標籤:sql
上一篇:如何查詢JSONB陣列
下一篇:如何查找“主要”主記錄SQL
