【发布时间】:2021-04-05 16:32:51
【问题描述】:
假设我有以下select_expr:
SELECT
name,
4 + (
(SELECT SUM(revenue) FROM tbl WHERE name=tbl.name)
/ (SELECT COUNT(revenue) FROM tbl WHERE name=tbl.name)
)
FROM tbl
忽略此查询没有意义的事实,我很好奇第二个 select_expr 将如何分类:
4 + (SELECT ...) / (SELECT ...)
我想所有三个项目都可以称为“操作数”,后两个可以称为“子选择”,但是有没有更好的方法来分类“子选择”只是最终选择表达式的一个组成部分?抱歉,如果这是迂腐的,但我正在寻找一种清晰的方法来对复杂表达式中的“术语”进行分类。
【问题讨论】:
-
(忽略表别名混淆)您有两个相关(您在子查询内部根据外部过滤)标量(返回一行一列)子查询。您将这些标量子查询视为任何其他表达式。
-
@AndrewSayer 当然,但是有没有办法区分一个终端子查询和一个更大的表达式的一部分?也许这只是一个通用的编程术语,而不是一个 sql 术语。
-
您的意思是作为
select子句的一部分而不是from子句作为行源?
标签: sql subquery formal-languages operands