如何解决表的合并,无重复条件
我有三个表A,B,C。 A和B具有相同的结构,即相同的列和已经不同的键。我想做的是统一A和B,然后与C加入工会。我知道我可以这样:
(SELECT x FROM A INNER JOIN C ON y WHERE z)
UNION
(SELECT x FROM B INNER JOIN C ON y WHERE z)
但是,我不得不重复这对我来说非常不便的条件,尤其是当查询时间更长并且需要经常调整时。
如果我在内部进行联合,那么查询根本不会为我完成(可能只是花了无法忍受的时间)
SELECT y
FROM (SELECT * FROM A UNION SELECT * FROM B) U
INNER JOIN C on y
WHERE z
是否有一种更优雅,更有效的方式来重复执行此操作?
我使用SAP SQL。
解决方法
查询第二次未完成的原因是,通过union
-ing,您丢失了有关该表的所有上下文和统计信息,该表无法使用索引,因此必须下降回到较慢的方法。
听起来第一个选项是唯一的一个,但是您可能可以使用VIEW
来避免重复输入相同的内容。有关详细信息,请参见their documentation。
如果您的栏没有重复,这应该会很好地工作:
SELECT DISTINCT x
FROM ((SELECT *
FROM A INNER JOIN
C
ON y
)
UNION ALL
(SELECT *
FROM B INNER JOIN
C
ON y
)
) abc
WHERE z;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。