我正在 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/