如果我为一个或两个输入文件指定不存在的连接字段,会发生什么情况?

如果我为一个或两个输入文件指定不存在的连接字段,会发生什么情况?

我有两个文件

$ cat file1
c c1
b b1
$ cat file2
a a2
c c2
b b2

如果我为一个或两个输入文件指定不存在的连接字段,会发生什么情况?

为什么以下外连接会生成输出? 它是否与关系代数中的外连接一致?(SQL 不允许指定不存在的连接字段)

谢谢。

$ join -a 1 -a 2 -o auto -t " " -e NULL  -1 1 -2 5 <(sort file1) <(sort file2)
NULL NULL a a2
NULL NULL b b2
NULL NULL c c2
b b1 NULL NULL
c c1 NULL NULL

$ join -a 1 -a 2 -o auto -t " " -e NULL  -1 5 -2 1 <(sort file1) <(sort file2)
NULL b b1 NULL
NULL c c1 NULL
a NULL NULL a2
b NULL NULL b2
c NULL NULL c2

$ join -a 1 -a 2 -o auto -t " " -e NULL  -1 5 -2 5 <(sort file1) <(sort file2)
NULL b b1 a a2
NULL b b1 b b2
NULL b b1 c c2
NULL c c1 a a2
NULL c c1 b b2
NULL c c1 c c2

来源于“加入-e”是什么意思?

答案1

NULL 和 NULL 相等,因此第三个示例中的外连接与内连接相同。

NULL 和非 NULL 值不相等,因此前两个示例中的外连接不包含内连接中的任何记录,因为内连接是空的。

相关内容