0

我有一个表(Table1),其中一些列通过 id 引用另一个表(Table2)。它看起来像这样:

表格1

ID   Column 1    Column 2    Column 3
 3         15          16           0
 4         19           0           0
 5         21          22          23
 6          0           0           0
 7         25          26           0
 8         27           0           0

表 2

ID    String
15      data
16      data
19      data
21      data

等等

我正在尝试编写一个返回如下结果的查询:

Table2ID    Table1ID
      15           3
      16           3
      19           4
      21           5
      22           5
      23           5
      25           7

等等

表 2 中没有提到任何类型的父级,所以我试图找出查询它的最佳方法。任何帮助都将非常有用,因为我的 SQL 经验价值不到两周。

4

2 回答 2

1

您可以使用 union(或 union all)来组合多个查询的结果。为了做到这一点,您必须遵守一些规则。首先,每个查询必须返回相同数量的列。接下来,每列不一定需要返回相同的数据类型,但如果它们是不同的数据类型,您可能会遇到意外错误,因此如果每个查询为每列返回相同的数据类型,您会更好。

需要明确的是,当您有多个列时,每个查询应该为第一列返回相同的数据类型,每个查询应该为第二列返回相同的数据类型,但第一列的数据类型不需要匹配第二列的数据类型。

Select Column1 As Table2ID, ID As Table1ID From Table1
Union All
Select Column2, ID From Table1
Union All
Select Column3, ID From Table1
于 2013-07-08T22:21:48.713 回答
0
SELECT Table2ID,t1.ID
FROM Table2 t2
JOIN Table1 t1
   ON t2.Table1ID=t1.Col1 OR t2.Table1ID=t1.Col2 OR t2.Table1ID=t1.Col3
于 2013-07-08T22:30:38.947 回答