如何通过另一个计算列使用一个计算列

dge*_*gel 5 sql sqlite

我在 Sqlite 中有一个查询涉及复杂的列计算,比方说:

SELECT 1+1 AS a;
Run Code Online (Sandbox Code Playgroud)

我想将此计算选择为a,但我还需要将其用作另一个计算的组成部分:

SELECT 1+1 AS a, a+2 AS b;
Run Code Online (Sandbox Code Playgroud)

不幸的是这会产生错误:

Error: no such column: a
Run Code Online (Sandbox Code Playgroud)

我知道我可以简单地再次重复计算b

SELECT 1+1 AS a, 1+1+2 AS b;
Run Code Online (Sandbox Code Playgroud)

但假设1+1是一些复杂且昂贵的操作,有什么方法可以让我稍后引用它而SELECT不必重新计算它?

Ker*_*mit 4

您需要使用子查询。

SELECT c.d AS a, c.d + 2 AS b
FROM
  (SELECT 1+1 AS d) c
Run Code Online (Sandbox Code Playgroud)

结果

| 一个 | 乙|
---------
| 2 | 4 |