sql – 如何重用大型查询而不重复它?

前端之家收集整理的这篇文章主要介绍了sql – 如何重用大型查询而不重复它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有两个查询,我将调用horrible_query_1和ugly_query_2,并且我想对它们执行以下两个减号操作:
(horrible_query_1) minus (ugly_query_2)
(ugly_query_2) minus (horrible_query_1)

或者我可能有一个terribly_large_and_useful_query,它产生的结果集我想用作未来几个查询的一部分.

如何避免在多个位置复制和粘贴相同的查询?我怎么能“不重复自己”,并遵循DRY原则.这在sql中是否可行?

我正在使用Oracle sql.便携式sql解决方案是首选,但如果我必须使用Oracle特定功能(包括PL / sql),那就没问题.

解决方法

create view horrible_query_1_VIEW as 
 select .. ...
  from .. .. ..

create view ugly_query_2_VIEW as 
 select .. ...
  from .. .. ..

然后

(horrible_query_1_VIEW) minus (ugly_query_2_VIEW)

(ugly_query_2_VIEW) minus (horrible_query_1_VIEW)

或者,也许,使用with子句:

with horrible_query_1 as (
  select .. .. ..
    from .. .. ..
),ugly_query_2 as (
  select .. .. ..
     .. .. ..
)
(select * from horrible_query_1 minus select * from ugly_query_2    ) union all
(select * from ugly_query_2     minus select * from horrible_query_1)
原文链接:https://www.f2er.com/mssql/84146.html

猜你在找的MsSQL相关文章