Sql 查找位于范围和之间且存在于公用外键id中的所有id

Sql 查找位于范围和之间且存在于公用外键id中的所有id,sql,sql-server,Sql,Sql Server,我希望所有特定Id都有一个公共的其他Id。我通过用户定义的表类型发送数据 CREATE TYPE rangeType AS TABLE ( ID2 int NOT NULL, StartRange int NULL, EndRange int NULL ); 该表如下所示 ID1 ID2 Value 11 2 3 12 2 4 12 3 8.9 15 3 1

我希望所有特定Id都有一个公共的其他Id。我通过用户定义的表类型发送数据

CREATE TYPE rangeType AS TABLE (
     ID2 int NOT NULL,
     StartRange int NULL,
     EndRange int NULL
);
该表如下所示

ID1    ID2    Value
 11      2       3
 12      2       4
 12      3       8.9
 15      3       10
 15      2       4
我将发送的值的形式如下

DECLARE @temp_table rangeType
Insert INTO @temp_table values (2,4,10)
INSERT INTO @temp_table values (3,5,10)
所以我希望输出是所有ID1的值,ID2为2和3,ID2为2的行的值应该在4和10之间,所有ID2为3的行的值应该在5和10之间

所以我的输出,在这种情况下,应该是

ID1
12
15
由于ID1
12
15
映射了
2
3
,并且具有指定各自范围之间的范围


我在表上尝试了一个内部联接,后跟一个
BETWEEN
操作符。这给了我一个正确的值,执行的操作是OR操作,而不是我想要的AND操作


您可以使用下面的查询

    SELECT ID1 FROM TABLE
WHERE ID2 IN (2,3)
AND 
CASE WHEN ID2 = 2 AND VALUE >= 4 AND VALUE >=10 THEN 1
     WHEN ID2 = 3 AND VALUE >= 5 AND VALUE >=10 THEN 1
     ELSE 0 
END = 1;

希望问题是清楚的嘿@吉姆。。这些值不是固定的,我将发送一个Id和值列表作为用户定义的数据类型