Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL联合-隐式匹配条件是什么?_Sql_Postgresql_Union - Fatal编程技术网

SQL联合-隐式匹配条件是什么?

SQL联合-隐式匹配条件是什么?,sql,postgresql,union,Sql,Postgresql,Union,如果我在两个表上执行SQL联合,联合使用什么显式条件来确定任意两行是相同的 翻阅Postgres文档,如果[它]出现在至少一个结果集中,则它仅表示一行位于两个结果集的集合并集中。如果[什么]出现在结果集中 它是否匹配第1列,然后是第2列。。。?它是如何决定停在columnX的 我有点吃惊,实际的匹配规则并没有明确说明。或者,我只是用10分钟的谷歌搜索找不到它们 谢谢你的帮助。我不知道你在问什么,但也许就是这个问题 在两个表上使用union或其他集合运算符时,将按位置比较行。所有列都必须匹配-也就

如果我在两个表上执行SQL联合,联合使用什么显式条件来确定任意两行是相同的

翻阅Postgres文档,如果[它]出现在至少一个结果集中,则它仅表示一行位于两个结果集的集合并集中。如果[什么]出现在结果集中

它是否匹配第1列,然后是第2列。。。?它是如何决定停在columnX的

我有点吃惊,实际的匹配规则并没有明确说明。或者,我只是用10分钟的谷歌搜索找不到它们


谢谢你的帮助。

我不知道你在问什么,但也许就是这个问题

在两个表上使用union或其他集合运算符时,将按位置比较行。所有列都必须匹配-也就是说,两个表中的列数必须相同。Postgres将根据类型优先规则决定结果集中每个列的类型。两个表中的列都将转换为指定的类型

这是否符合你的要求

实际上,这在以下文件中有详细说明:

SQL联合构造必须匹配可能不同的类型才能成为 单一结果集。分辨率算法分别应用于 联合查询的每个输出列。交叉与例外 构造以与UNION相同的方式解析不同的类型。这个 大小写、数组、值、最大和最小构造使用相同的 匹配组件表达式并选择结果的算法 数据类型

联合、大小写和相关构造的类型解析

如果所有输入都是相同的类型,并且不是未知的,则解析为 那种

如果任何输入属于域类型,请将其视为域的 所有后续步骤的基本类型。[9]

如果所有输入的类型都未知,请将其解析为首选的文本类型 字符串类别的类型。否则,将忽略未知输入 就其余规则而言

如果非未知输入并非全部属于同一类型类别,则失败

选择第一个非未知输入类型,它是中的首选类型 那一类,如果有的话

否则,选择最后一个允许所有输入的非未知输入类型 要隐式转换为它的前面的非未知输入。那里 始终是这样的类型,因为至少列表中的第一个类型必须 满足这个条件

将所有输入转换为所选类型。如果没有一个 从给定输入到选定类型的转换


我不知道你在问什么,但也许就是这个问题

在两个表上使用union或其他集合运算符时,将按位置比较行。所有列都必须匹配-也就是说,两个表中的列数必须相同。Postgres将根据类型优先规则决定结果集中每个列的类型。两个表中的列都将转换为指定的类型

这是否符合你的要求

实际上,这在以下文件中有详细说明:

SQL联合构造必须匹配可能不同的类型才能成为 单一结果集。分辨率算法分别应用于 联合查询的每个输出列。交叉与例外 构造以与UNION相同的方式解析不同的类型。这个 大小写、数组、值、最大和最小构造使用相同的 匹配组件表达式并选择结果的算法 数据类型

联合、大小写和相关构造的类型解析

如果所有输入都是相同的类型,并且不是未知的,则解析为 那种

如果任何输入属于域类型,请将其视为域的 所有后续步骤的基本类型。[9]

如果所有输入的类型都未知,请将其解析为首选的文本类型 字符串类别的类型。否则,将忽略未知输入 就其余规则而言

如果非未知输入并非全部属于同一类型类别,则失败

选择第一个非未知输入类型,它是中的首选类型 那一类,如果有的话

否则,选择最后一个允许所有输入的非未知输入类型 要隐式转换为它的前面的非未知输入。那里 始终是这样的类型,因为至少列表中的第一个类型必须 满足这个条件

将所有输入转换为所选类型。如果没有一个 从给定输入到选定类型的转换


UNION与UNION ALL的比较类似于DISTINCT,因为要删除重复项,所有列都必须相同。

UNION与UNION ALL的比较类似于DISTINCT,因为要删除重复项,所有列都必须相同。

Gordon,两个表的列类型匹配
. 我的问题是,UNION如何决定每个表中的行是否匹配?Cade Roux给出的答案是UNION比较每一列的值,并且仅当每一列匹配时才认为该行是重复的。这对我读博士后的论文来说并不明显。谢谢Gordon,这两个表的列类型匹配。我的问题是,UNION如何决定每个表中的行是否匹配?Cade Roux给出的答案是UNION比较每一列的值,并且仅当每一列匹配时才认为该行是重复的。这对我读博士后的论文来说并不明显。谢谢凯德,谢谢-这很有道理。我花了一天的大部分时间在UNION和FULL OUTER JOIN之间切换,所以我希望UNION有一个ON子句。我猜,它隐式地在每一个匹配的列上创建一个。凯德,谢谢-这很有意义。我花了一天的大部分时间在UNION和FULL OUTER JOIN之间切换,所以我希望UNION有一个ON子句。我猜,它隐式地在每一个匹配的列上创建一个。