【发布时间】:2016-04-28 13:56:56
【问题描述】:
我正在使用 SQL Server 2012 并希望查询以下内容:
我有 2 个表,其中大部分列不同。 (一张表有 10 列,另一张有 6 列)。 但是它们都包含一列 ID 号和另一列 category_name。
- 表之间的 ID 号可能重叠(例如,1 个表可能有 200 个不同的 ID,而其他 900 个但只有 120 个 ID 在两者中)。
- 每个表的类别名称不同且唯一。
现在我希望有一个包含两个表的所有行的表,其中包含一个 ID 列和一个 Category_name 列(总共 14 列)。 因此,如果相同的 ID 在表 1 中有 3 条记录,在表 2 中有 5 条记录,我希望拥有所有 8 条记录(8 行)
我认为这里的复杂之处在于只有一个“Category_name”列。
我尝试了以下方法,但是当两个表中都没有 null 时,我只得到一个记录而不是两个:
SELECT isnull(t1.id, t2.id) AS [id]
,isnull(t1.[category], t2.[category_name]) AS [category name]
FROM t1
FULL JOIN t2
ON t1.id = t2.id;
对正确的方法有什么建议吗?
【问题讨论】:
-
一个 UNION ALL 将符合您的标准并且非常简单。您只需要在联合的第一条语句中创建一些列,这些列将是 NULL,以便第二个联合在某个地方粘贴它的数据。
标签: sql sql-server database join