如何使用列别名选择值?
问题描述:
如果我这样做在SQLite3的:如何使用列别名选择值?
SELECT *
FROM (VALUES (1), (2), (3)) AS "tbl.col"
WHERE "tbl"."col" = 1
我得到:没有这样的列:tbl.col
什么是正确的方法是什么?
谢谢!
答
我认为你正在寻找这样的:
SELECT *
FROM (VALUES (1), (2), (3)) AS tbl(col)
WHERE tbl.col = 1;
注意,当您(使用"tbl.col"
),那么这是有它的周期一个名逃脱的标识符。不是两个名字。
编辑:
我本来期望上述的工作,但它在SQLite不。一种替代方案是使用CTE:
with tbl(col) as (
VALUES (1), (2), (3)
)
SELECT *
FROM tbl
where tbl.col = 1
答
我发现这个question它回答我的问题。
SELECT "tbl"."" AS "col"
FROM (VALUES (1), (2), (3)) AS "tbl"
基本上,在VALUES第一列名是一个空字符串“”,二是“1”,三是“2”,等等......
希望这有助于其他人。
谢谢。我试过你写的东西,我回来了:附近“(”:语法错误: – Agendum
另外,我正在使用DB Browser进行SQLite测试。是否有可能这是该工具的限制? – Agendum
是的,我能够确认其他SQLite工具使用您提供的语法报告相同的错误。例如,这个在线SQLite工具:[link](http://wdbengine.sourceforge.net/)。 – Agendum