在SQLite数据库中,我有一个包含整数类型col“a”的表“test”。
基于那个col,我想再计算2个cols,但第二个需要第一个cols的结果。
所以我尝试了以下内容:
SELECT a, a+1 AS b, b*2 AS c FROM test
但是在SQLite中它不起作用:
Error: no such column: b
在其他DBMS中似乎有效,我在w3schools尝试使用以下查询进行类似的操作。
SELECT customerid as a, a+1 AS b, b*2 AS c FROM customers
......那里有一切正常。
有没有办法在没有任何子选择的情况下在SQLite中实现相同的效果?
答案 0 :(得分:1)
检查this link它在哪里讨论MySQL中列别名的限制。从链接中引用相关行:
WHERE子句确定哪些行应包含在GROUP BY子句中,但它引用的列别名是在选择行之后才知道的,并按GROUP BY分组。
我想,通过扩展,使用别名在同一个查询中进行选择会因同样的原因而失败。
相反,请尝试在所有表达式中使用列名。这样,您的代码就可以在所有DBMS中运行。
SELECT a, a+1 AS b, (a+1)*2 AS c FROM test