如何在我加入时标记哪些行来自哪个表?

时间:2015-12-16 14:13:27

标签: sql teradata

我正在使用类似的数据连接两个表,但我希望能够识别哪些行来自哪个表。我想我可以创建一个新列,如果两个表中都存在'Both','表1'如果它存在于第一个表中而不存在于第二个表中,那么'表2'如果它存在于第二个表中表但不是第一个。我知道我需要写一些条件语句,但我不知道那会是什么。

1 个答案:

答案 0 :(得分: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

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

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