2014-01-09 88 views
0

使用PostgreSQL並給出以下示例表,如何選擇至少有一個孩子的父母10 孩子20?僅選擇包含SQL中至少包含給定元素的行

parent | child 
--------+------- 
     1 | 10 
     1 | 20 
     1 | 30 
     2 | 10 
     2 | 20 
     3 | 10 

換句話說,這是預期的結果:

parent 
-------- 
     1 
     2 

在一般情況下,我該如何選擇具有至少所有給定的兒童X1X2所有家長,...,xn?什麼是最有效的方法來做到這一點?

謝謝!

+0

@liszt ...您的quetsion不清楚..提供您需要的樣本結果數據.. –

+1

您能否請張貼一些樣本輸出? – Rachcha

+0

對不起,我已經添加了預期的結果。 – liszt

回答

3
SELECT parent FROM table WHERE child IN(10,20) 
GROUP BY parent 
HAVING COUNT(DISTINCT child)>=2 

Fiddle

1

這不是完全清楚你的要價。但是,我會給它一個破解。

如果你要手動定義,你可以做一個簡單的SELECT語句的孩子:

SELECT DISTINCT parent 
FROM table1 
WHERE child IN ('10', '20') 

這將選擇具有10或20,因爲孩子所有的父母。要添加更多,只需將該號碼添加到IN()部分。

如果你想爲大量的孩子或者未知數量的孩子做這件事,那麼你可以創建一個臨時表來存儲孩子的搜索值並將它加入到你的主表中。例如:

CREATE TABLE #SearchChildren 
(
    Child int 
) 

然後將您的搜索值輸入#SearchChildren。需要更多地瞭解你在做什麼這一點。

SELECT DISTINCT a.parent 
FROM table1 as a 
JOIN #SearchChildren as s 
ON a.child = s.Child 

不知道更多關於你想要做什麼很難給出完整的答案,但希望這有助於。

相關問題