1
+---+---+
| A | B |
+---+---+
| 1 | 1 |
+---+---+
| 1 | 2 |
+---+---+
| 1 | 3 |
+---+---+
| 1 | 4 |
+---+---+
| 2 | 2 |
+---+---+
| 2 | 4 |
+---+---+
| 3 | 2 |
+---+---+
| 4 | 3 |
+---+---+

B からの一連の値が与えられた場合、すべての B の値が共有する A からの値をどのように選択できますか? 例えば:

  • 値 1、2、3、4 は 1 を返す必要があります
  • 値 2、4 は 1、2 を返す必要があります
  • 値 1、2、3、4、5 は空のセットを返す必要があります

これまでのところ、私は持っています:

を選択
FROM (テーブル_A)
JOIN table_B ON A = A
WHERE B = '1' または B = '2' または B = '3' または B = '4'

それは明らかに私が必要とするものとはかけ離れています。私は本当に頭がいっぱいで、これを行う方法がわかりません。

4

2 に答える 2

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

于 2012-09-26T17:47:19.357 に答える
0

A, Bグループが一意であり、これでうまく機能することを保証できる場合。

SELECT A 
FROM mytable
WHERE B in (1,2,3,4,5)
GROUP BY A
having count(*)=5;
于 2012-09-26T17:49:30.473 に答える