2015-12-16 23 views
0

我加入了两张表和类似的数据,但我希望能够确定哪些行来自哪个表。我想我可以创建一个新的列,如果它存在于两个表中,则'两个',如果它存在于第一个表中但不存在于第一个表中,则存入'表1';如果存在于第二个表中则存在'表2'表,但不是第一个。我知道我需要写一些有条件的陈述,但我不知道那会是什么。我怎样才能标记哪个行来自哪个表?

+0

你使用outer join还是union? – Szymon

+0

@Szymon外部连接 – Saliceran

+2

您可以使用'select column_name as myColumn',如果您使用连接,则输出列将具有名称“myColumn” – Slasko

回答

2

答案的详细信息将取决于您正在使用的特定数据库平台上的很多。据说,大多数数据库平台都支持CASE语句,它允许您根据各种条件有条件地返回值(包括静态字符串)。

但是,更一般的情况是,您将根据与表2字段匹配的表1字段进行外连接。在您的代码中,如果返回的表1字段为空,表示数据来自表2,反之亦然。如果两者都不为空,则数据来自两者。

你也有另一种选择,以

 select from Table 1 
UNION select from Table 2 

然后你就可以有一个静态字段,表示该表中的每个记录是从,如

 SELECT 'Table 1' table, field1, field2 FROM Table1 
UNION SELECT 'Table 2' table, field1, field2 FROM Table2 

此选项可能会创造更多的工作你的代码,但可能会减轻数据库服务器的负担。

可能有更多的选择,但那些是跳出我的。

相关问题