2017-10-09 77 views
2

我有一個表,如表(id,C1,C2,R,..),並且在此表中,C1-C2對與一個或多個R有關,用於例如(id1,a,b,r1,...)(id2,a,b,r2,...) 我想找出所有C1-C2雙即只與某個R(egfor r1,然後a-b對將不包括在內,因爲它也涉及到r2),我應該怎麼寫查詢?Mysql:如何選擇其中列值爲2的組合的行給定某個其他列值

+3

編輯你的問題,並提供樣本數據和預期的結果。 –

回答

0

如果我理解正確的話,你可以使用group byhaving。我想要的是隻與一個r所有對:

select c1, c2, max(r) as r 
from t 
group by c1, c2 
having min(r) = max(r); 

如果你心裏有一個特定的r

select c1, c2 
from t 
group by c1, c2 
having min(r) = max(r) and min(r) = 'r1' 
+0

謝謝。它解決了我的問題。 – LLZ

+0

另一個問題,如果我想查看除查詢後的C1,C2等其他列的信息,例如,然後劑量GROUP BY仍然工作? – LLZ

+0

@LiliZhu。 。 。不。如果這是你的問題,你應該問另一個問題,並提供適當的樣本數據和預期結果。 –

0

您可以按C1和C2進行分組,並計算與您想要的值相等(並確保它不是0)的「r」的數量以及不是(和)的數量確保它是0):

SELECT c1, c2 
FROM  mytbale 
GROUP BY c1, c2 
HAVING COUNT(CASE r WHEN 'r1' THEN e END) > 0 AND 
     COUNT(CASE r WHEN 'r1' THEN NULL ELSE 1 END) = 0 
+0

謝謝,GROUP BY C1,C2的想法解決了我的問題。 – LLZ

相關問題