当我进行连接时,如何标记哪些行来自 table?
How can I mark which rows come from which table when I do a join?
我将两个 table 与相似数据连接在一起,但我希望能够识别哪些行来自哪些 table。我想我可以创建一个新列,如果 'Both' 存在于两个 table 中,我可以在其中放置 'Table 1' 如果它存在于第一个 table 但不存在于第二个中, 'Table 2' 如果它存在于第二个 table 而不是第一个。我知道我需要写一些条件语句,但我不知道那会是什么。
您的答案的详细信息将在很大程度上取决于您使用的特定数据库平台。话虽如此,大多数数据库平台都支持 CASE 语句,它允许您根据各种条件有条件地 return 值(包括静态字符串)。
但是,更一般地说,您将根据匹配 Table 2 个字段的 Table 1 个字段进行外部联接。在您的代码中,如果被 return 编辑的 Table 1 字段为空,则表示数据来自 Table 2,反之亦然。如果两者都不为空,则数据来自两者。
你还有另一个选择,
select from Table 1
UNION select from Table 2
然后你可以有一个静态字段指示每个记录来自哪个table,例如
SELECT 'Table 1' table, field1, field2 FROM Table1
UNION SELECT 'Table 2' table, field1, field2 FROM Table2
此选项可能会在您的代码中创建更多工作,但可能会减轻数据库服务器的负担。
可能还有更多选择,但那些是我突然想到的。
我将两个 table 与相似数据连接在一起,但我希望能够识别哪些行来自哪些 table。我想我可以创建一个新列,如果 'Both' 存在于两个 table 中,我可以在其中放置 'Table 1' 如果它存在于第一个 table 但不存在于第二个中, 'Table 2' 如果它存在于第二个 table 而不是第一个。我知道我需要写一些条件语句,但我不知道那会是什么。
您的答案的详细信息将在很大程度上取决于您使用的特定数据库平台。话虽如此,大多数数据库平台都支持 CASE 语句,它允许您根据各种条件有条件地 return 值(包括静态字符串)。
但是,更一般地说,您将根据匹配 Table 2 个字段的 Table 1 个字段进行外部联接。在您的代码中,如果被 return 编辑的 Table 1 字段为空,则表示数据来自 Table 2,反之亦然。如果两者都不为空,则数据来自两者。
你还有另一个选择,
select from Table 1
UNION select from Table 2
然后你可以有一个静态字段指示每个记录来自哪个table,例如
SELECT 'Table 1' table, field1, field2 FROM Table1
UNION SELECT 'Table 2' table, field1, field2 FROM Table2
此选项可能会在您的代码中创建更多工作,但可能会减轻数据库服务器的负担。
可能还有更多选择,但那些是我突然想到的。