1 oracle
当我执行此查询时:
select 2+2, 2+2, 2+2 from dual;
Run Code Online (Sandbox Code Playgroud)
我得到多列,但根据定义,dual
只有一行和一列。那么背后的原因是什么呢?
表中的列数与SELECT
语句投影中的列数无关。您始终可以向投影添加额外的计算列(至少实际上……理论上,您最终可能会遇到某种逻辑限制)。
您在dual
此处查询的事实无关紧要。您可以对任何表执行完全相同的操作。此查询中的投影
SELECT e.*, 2+2 computed_one, 2+3 computed_two, 2+4 computed_three
FROM emp e
Run Code Online (Sandbox Code Playgroud)
回报中的所有列emp
的表与另外三个计算列一起computed_one
,computed_two
和computed_three
。dual
当您希望结果只有一行时,总是只有一行这一事实非常有用,但除此之外,无论您使用dual
还是您自己创建的单行单列表,在逻辑上都没有区别。