(T-SQL)将两列连接到一个公共列

时间:2015-02-09 13:58:34

标签: sql sql-server tsql

我有这个问题:

TABLE1

|  ID  |  DESCRIPTION  |
|  10  |  Apple        |
|  20  |  Banana       |
|  33  |  Pineapple    |
|  47  |  Orange       |

TABLE2

|  ID  |  FRUIT1  |  FRUIT2  |
|   1  |    10    |    47    |
|   2  |    47    |    10    |
|   3  |    33    |    20    |
|   4  |    20    |    33    |

如果我选择TABLE2中的所有数据,我希望输出TABLE1.DESCRIPTIONTABLE2.FRUIT1的水果名称(TABLE2.FRUIT2),而不是ID。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

使用不同的别名

加入table2两次
select t2.id, f1.description, f2.description
from table2 t2
left join table1 f1 on f1.id = t2.fruit1
left join table1 f2 on f2.id = t2.fruit2

答案 1 :(得分:0)

您可以加入Table1两次;你只需要提供不同的表别名:

SELECT ID, T1a.Description [Fruit1], T1b.Description [Fruit2]
FROM Table2 T2
INNER JOIN Table1 T1a
  ON T2.Fruit1 = T1a.ID
INNER JOIN Table1 T1b
  ON T2.Fruit1 = T1b.ID

答案 2 :(得分:0)

使用union将列组合在一起,如下所示:

Select t1.Description
from Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.Fruit1
UNION
Select t1.Description
from Table2 t2
INNER JOIN Table1 t1 on t1.ID = t2.Fruit2