如何使用另一个计算列的计算列

时间:2013-01-09 18:31:37

标签: sql sqlite

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

SELECT 1+1 AS a;

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

SELECT 1+1 AS a, a+2 AS b;

不幸的是,这会产生错误:

Error: no such column: a

我知道我可以再次为b重复计算:

SELECT 1+1 AS a, 1+1+2 AS b;

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

3 个答案:

答案 0 :(得分:2)

您需要使用子查询。

SELECT c.d AS a, c.d + 2 AS b
FROM
  (SELECT 1+1 AS d) c

<强>结果

| a | b |
---------
| 2 | 4 |

答案 1 :(得分:0)

看看你是否可以这样做(使用表的子查询)

Select t.a+2 as b
    FROM (Select 1+1 as a from xyz) t 

答案 2 :(得分:0)

除了其他人的所有好例子之外 - 这适用于Oracle:

SELECT a, a+2 b From
(
 SELECT 1+1 a From dual
)
/

Output:

A | B
-----
2 | 4