SQLITE "no such column"(如果由 "AS"创建)

标签 sql sqlite select dynamic-columns

我正在 SELECT 子句中创建一个临时列,如下所示:

SELECT *, 
       CASE WHEN a THEN 1 ELSE 0 END AS my_col 
FROM foo

现在我可以使用“my_col”访问和排序结果,即

SELECT *, 
       CASE WHEN a THEN 1 ELSE 0 END AS my_col 
FROM foo 
ORDER BY my_col

但是当我想要这样扩展列时

SELECT *, 
       CASE WHEN a THEN 1 ELSE 0 END AS my_col, 
       my_col * 5 AS my_col_2 
FROM foo

SQLite 生成“没有这样的列:my_col”。

那么如何使用临时列在查询中进一步使用呢?这可能吗?

最佳答案

您可以使用子查询:

SELECT X.my_col, X.my_col * 5 AS my_col_2
FROM (
     SELECT *, CASE WHEN a THEN 1 ELSE 0 END AS my_col FROM foo
     ) X
ORDER BY X.my_col

或者只是重复 case 语句:

SELECT *, CASE WHEN a THEN 1 ELSE 0 END AS my_col, CASE WHEN a THEN 1 ELSE 0 END * 5 AS my_col_2 FROM fo

关于SQLITE "no such column"(如果由 "AS"创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315414/

相关文章:

sql - 谷歌是否更改/更新了与 Cloud SQL 的 vm ssl 连接相关的内容?

c# - 从两个表中获取不同记录的 Linq 查询

mysql - 如何标记 MySQL 中的每个非重复行? (合并选择和更新语句)

mysql - SQL 对列值(键、值)上的数据进行分组

mysql - 按 2 列分组并第一次出现第 3 列的 SQL 查询

java - 数据库设计: Email as table's id

android - 从 Android 访问 iOS 核心数据

python - sqlalchemy,如果它不存在则创建一个 sqlite 数据库

带有图像的jQuery多选选项

mysql - 从数百万条记录中选择一条记录慢