2
假设我在SQL两个表:如何将两个表(具有相同的模式)合并到一个具有不同值并指示每行来自哪个表的表中?
Table_Alpha Table_Bravo
Id | Name Id | Name
---+------ ---+-----
1 | Alice 1 | Charlie
2 | Bob 2 | Bob
3 | Charlie 3 | Dorothy
我想这两个表合并成一个单一的表,避免重复和跟踪其表的每个名字从像这样来了:
Result
Name | Alpha | Bravo
-------+-------+------
Alice | 1 | 0
Bob | 1 | 1
Charlie| 1 | 1
Dorothy| 0 | 1
我想,我想要的查询将是这个样子:
SELECT Name, 1 AS Alpha, 0 AS Bravo FROM Table_Alpha
UNION
SELECT Name, 0 AS Alpha, 1 AS Bravo FROM Table_Bravo;
然而,上面的查询将返回两行对每个南e出现在两张表中。我该如何编写查询,以便为每个不同的名称返回一行?
这符合OP的请求如果你添加“按名称分组”。 – 2013-05-08 20:07:38
@DaveJohnson - 你说得对。我已经更新了答案。谢谢 – 2013-05-08 20:08:57
非常接近!我正在使用的SQL服务器要求我添加一个“GROUP BY”子句,因此我放弃了“DISTINCT”关键字。 – 2013-05-08 20:11:30