使用来自另一个表的列的范围/条件从表中获取数据

时间:2013-04-24 12:56:31

标签: sql sql-server join

我有一个表说“Table1”,其中有大量数据存储在列名“Value”下,我有另一个表“Table2”,它有“from”和“to”列。我想表演一个 “表1”的列“值”之间的“之间”操作和操作数将来自“表2”的“从”和“到”列。

例如:

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

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

P.S其中没有共同的专栏。

1 个答案:

答案 0 :(得分:1)

我认为这就是你所追求的。它会返回Table1中与Table2中的范围匹配的任何值。

DECLARE @ t1 table(value int)     DECLARE @ t2表(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