为什么我可以从双列中选择多列?

1 oracle

当我执行此查询时:

select 2+2, 2+2, 2+2 from dual;
Run Code Online (Sandbox Code Playgroud)

我得到多列,但根据定义,dual只有一行和一列。那么背后的原因是什么呢?

Jus*_*ave 5

表中的列数与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_onecomputed_twocomputed_threedual当您希望结果只有一行时,总是只有一行这一事实非常有用,但除此之外,无论您使用dual还是您自己创建的单行单列表,在逻辑上都没有区别。