0

整数のリストのいずれかが columnA および columnB 整数値で定義された範囲内にあるテーブルからレコードを取得するにはどうすればよいですか?

列のペアによって定義された範囲ではなく、列の値と比較する場合の IN 演算子について知っています。

例: select * from mytable where mytable.colA in (1,3,5,6);colA が 1、3、5、または 6 のすべてのレコードを取得します。

範囲についてそのようなものはありますか?または、次のようにする必要があります:

select * from mytable where 1 between mytable.colA and mytable.colb OR 3 between mytable.colA and mytable.colb OR 5 between mytable.colA and mytable.colb OR 6 between mytable.colA and mytable.colb;

4

2 に答える 2

1

一般的な戦術は、一時テーブルをセットアップし、それを使用してメイン テーブルに参加することです。

簡単なセットアップ方法は次のとおりです。

DECLARE @TempList table (LookFor int not null)

INSERT @TempList (LookFor) values
  (1)
 ,(3)
 ,(5)
 ,(6)

これはテーブルであるため、クエリ ロジックを使用してデータを入力できます。

次に、これをターゲット テーブルに結合します。上記の例では:

SELECT mt.*
 from myTable mt
  inner join @TempList tl
   on tl.LookFor = mt.ColA

そして、私の解釈が正しければ、これはあなたが本当に探しているものかもしれません:

SELECT mt.*
 from myTable mt
  inner join @TempList tl
   on tl.LookFor between mt.ColA and mt.ColB
于 2016-06-20T22:06:42.607 に答える