子查询(大查询)中的 SQL 脚本?

Posted

技术标签:

【中文标题】子查询(大查询)中的 SQL 脚本?【英文标题】:SQL script within subquery (Big Query)? 【发布时间】:2021-05-02 13:57:44 【问题描述】:

有没有办法在子查询中包含 SQL 脚本?

例如:

select col_1, col_2, count(*) from (
Declare max_radius INT64;
set max_radius = 250;

select * from my_table
where radius <  max_radius
)
group by col_1,col_2

在我的情况下,不可能将变量声明移到子查询之外。 谢谢!

【问题讨论】:

【参考方案1】:

对于这个特定示例,您可以使用 CTE 来定义参数值:

with params as (
      select 250 as max_radius
     )
select t.col_1, t.col_2, count(*)
from params p cross join
     my_table t
where t.radius < p.max_radius
group by t.col_1, t.col_2;

【讨论】:

是的,这是我的第一个,但如果 my_table 很大(实际上确实如此),则交叉连接的性能会很差,因为它会复制 mytable 中每一行的参数。我想通过使用变量来解决这个问题。 @Yairh 。 . .交叉连接应该很简单,因为只有一行。

以上是关于子查询(大查询)中的 SQL 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

从视图中的 SQL 子查询返回值列表

SQL中的子查询

如何使用子查询和 wm_concat 对 Oracle SQL 中的数据进行排序

ORACLE LEFT JOIN 子查询 在SQL SERVER中可以使用如图中的子查询,ORACLE中怎么实现

MySQL的子查询中FROM和EXISTS子句的使用教程

SQL Server - 在子查询中使用主查询中的列