1

特定の複数のcol2値のcol1値を取得しようとしています。例:col2の「1、2、3、4」値(つまり、col1の「1」)のcol1値を確認したい。別の例:col2の「1、2」のcol1値は「1、2」です。SQL構文でこれを行うにはどうすればよいですか?

画像の例

4

3 に答える 3

5

あなたが欲しいものは関係除算と呼ばれています。それを達成するためのいくつかの方法があります。同様の問題に対する10以上の異なる解決策があるこの質問を確認してください-ベンチマークを含む:SQLの結果をフィルタリングする方法

(col1, col2)方法の1つは次のとおりです(組み合わせが一意であると想定しています)。

SELECT col1 
FROM tableX 
WHERE col2 IN (1, 2, 3, 4)
GROUP BY col1
HAVING COUNT(*) = 4            --- the size of the above list

そして別の:

SELECT t1.col1 
FROM tableX AS t1
  JOIN
     tableX AS t2
         ON  t2.col1 = t1.col1
         AND t2.col2 = 2
  JOIN
     tableX AS t3
         ON  t3.col1 = t1.col1
         AND t3.col2 = 3
  JOIN
     tableX AS t4
         ON  t4.col1 = t1.col1
         AND t4.col2 = 4
WHERE t1.col2 = 1
于 2012-03-25T08:57:44.313 に答える
2

おそらくこれは役立つかもしれません:

SELECT col1 FROM MyTable WHERE col2 IN ('1', '2', '3', '4')

col2これにより、「1」、「2」、「3」、または「4」のいずれかであるすべての行が返されます。

つまり、あなたの例のように、上記のクエリは

col1
---------
1
1
1
1
2
2

DISTINCTを追加すると、個別のcol1値のみが取得されます。

SELECT DISTINCT col1 FROM MyTable WHERE col2 IN ('1', '2', '3', '4')

戻ります

col1
---------
1
2

あなたの例では。

于 2012-03-25T08:19:33.157 に答える
0

SQLで説明していることを行うことはできません。あなたのコメントから判断すると:

col2に「1,2,3,4」が「必須」であるcol1値を表示したいと思います。この例では、col1の「1」の値は「1,2,3,4」であり、col1の「1」の値はcol2に「1,2」しか含まれていないため、このステートメントでは、結果としてcol1の「1」の値のみが表示されます。 。ただし、col1の「2」値も示します。

シーケンスが重要だと思います。各行はデータセット内のどこにあるかに基づいて一意ではないため、SQLを使用して単純に行うことはできません。データセットにプログラミング言語(C、java、phpなど)をロードし、データセットをループして、この方法でこれらのシーケンスを確認する必要があります。

于 2012-03-25T08:38:45.550 に答える