我在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
中稍后引用它而不必重新计算它?
答案 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