1

我有一个表说“Table1”,其中有大量数据存储在列名“Value”下,我有另一个表说“Table2”,其中包含“from”和“to”列。我想对“Table1”的“value”列执行“between”操作,操作数将来自“Table2”的“from”和“to”列。

例如:

Table1      Value
            -------
            10
            11
            12
            13
            14
            15

Table2      from     to
           --------------
           1          3
           4          10
           5          15


operations to be performed:    select value from Table1 where value between 1 and 3 
                               select value from Table1 where value between 4 and 10
                               select value from Table1 where value between 5 and 15

输出将是这三个操作的联合。

PS它们之间没有共同的列。

4

1 回答 1

1

我想这就是你所追求的。它返回Table1匹配范围内的任何值Table2

DECLARE @t1 table (value int) DECLARE @t2 table (fr int, t int, iname varchar(20))

INSERT INTO @T1
VALUES
    (10)
    ,(11)
    ,(12)
    ,(13)
    ,(14)
    ,(15)

INSERT INTO @t2
VALUES
    (1, 3, 'First')
    ,(4, 10, 'Second')
    ,(5, 15, 'Third')

SELECT
  t1.value, t2.iname
FROM
  @t1 t1
INNER JOIN
  @t2 t2
    ON t1.Value BETWEEN t2.fr and t2.t

回报:

10  Second
10  Third
11  Third
12  Third
13  Third
14  Third
15  Third

10显示两次,因为它匹配两个条件。您可能想在DISTINCT那里添加一个到您的选择。

于 2013-04-24T13:03:31.393 回答