5

我在 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而无需重新计算?

4

3 回答 3

2

您需要使用子查询。

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

结果

| 一个 | 乙 |
---------
| 2 | 4 |
于 2013-01-09T18:32:55.837 回答
0

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

Select t.a+2 as b
    FROM (Select 1+1 as a from xyz) t 
于 2013-01-09T18:34:51.080 回答
0

除了其他人的所有好例子 - 这在 Oracle 中有效:

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

Output:

A | B
-----
2 | 4
于 2013-01-09T18:46:42.517 回答