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

(T-SQL) Join two columns to one common column

我有这个问题:

表 1:

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

表 2:

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

如果我 select TABLE2 中的所有数据,我想输出 TABLE2.FRUIT1TABLE2.FRUIT2 的水果名称 (TABLE1.DESCRIPTION) 和不是身份证。

我该怎么做?

使用不同的别名加入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

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

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

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

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