2012-09-26 166 views
1
+---+---+ 
| A | B | 
+---+---+ 
| 1 | 1 | 
+---+---+ 
| 1 | 2 | 
+---+---+ 
| 1 | 3 | 
+---+---+ 
| 1 | 4 | 
+---+---+ 
| 2 | 2 | 
+---+---+ 
| 2 | 4 | 
+---+---+ 
| 3 | 2 | 
+---+---+ 
| 4 | 3 | 
+---+---+ 

給定一組來自​​B的值,我如何從A中選擇所有B值共享的值?例如:需要MySQL選擇幫助

  • 的值1,2,3,4應該返回1
  • 的值2,4應該返回1,2
  • 的值1,2,3,4,5應該返回空集

到目前爲止,我有:

SELECT A 
FROM (table_A) 
JOIN table_B ON A = A 
WHERE B = '1' OR B = '2' OR B = '3' OR B = '4'

這顯然路要走從我需要什麼。我真的在這裏頭痛苦,不知道該怎麼做。

+0

來自同一張表或2張不同表的'A'和'B'列嗎? –

+0

'A'和'B'來自兩個不同的表格,通過'JOIN'結合在一起。 – squagels

回答

0
select A 
from tableA 
JOIN tableB ON tableA.A = tableB.A 
where B in (1,2,3,4) 
group by A 
having count(distinct B) = 4 

having子句中的數目需要是in子句中的元素數。

+0

輝煌。 「GROUP BY」和「HAVING」計數完美無缺。謝謝。 – squagels

0

如果您可以保證A, B是唯一的一組,並且爲此工作得很好。

SELECT A 
FROM mytable 
WHERE B in (1,2,3,4,5) 
GROUP BY A 
having count(*)=5;