此处的文档说明: 复合查询的组件查询的选择列表中的相应表达式必须在数字上匹配,并且必须位于同一数据类型组中(例如数字或字符)。 这意味着您不能只指定一次投影列表,因为这是 UNION 接线员。 不过,您可以为选择部分做一些事情。如果query1和query2都有公共表/视图(外部)连接到它们,那么您可以将它们从 UNION ,分离此部分并将公共表/视图连接到它,处理 UNION 作为单独的一部分 VIEW . 如果您提供了一个查询的简化示例,那会更好,但下面是我提出的一个示例: 考虑到这个问题(假设与您的类似):
SELECT t0.col1, t2.col2 FROM table0 t0, table2 t2 WHERE t0.col = t2.col(+)
UNION
SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2 WHERE t1.col = t2.col(+);
您可以将其替换为:
SELECT q1.col1, t2.col2 FROM
(
select t0.col1, t0.col FROM table0 t0
UNION
select t1.col1, t1.col FROM table0 t1
) q1,
table2 t2
WHERE q1.col = t2.col(+);
1条答案
按热度按时间0sgqnhkj1#
此处的文档说明:
复合查询的组件查询的选择列表中的相应表达式必须在数字上匹配,并且必须位于同一数据类型组中(例如数字或字符)。
这意味着您不能只指定一次投影列表,因为这是
UNION
接线员。不过,您可以为选择部分做一些事情。如果query1和query2都有公共表/视图(外部)连接到它们,那么您可以将它们从
UNION
,分离此部分并将公共表/视图连接到它,处理UNION
作为单独的一部分VIEW
.如果您提供了一个查询的简化示例,那会更好,但下面是我提出的一个示例:
考虑到这个问题(假设与您的类似):
您可以将其替换为:
干杯