如何使用列别名选择值?

时间:2016-12-01 22:40:24

标签: sql sqlite

如果我在SQLite3中这样做:

SELECT *
FROM (VALUES (1), (2), (3)) AS "tbl.col"
WHERE "tbl"."col" = 1

我得到:没有这样的专栏:tbl.col

正确的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:4)

我认为你正在寻找这个:

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

答案 1 :(得分:1)

我发现这个question回答了我的问题。

std::queue

基本上,在VALUES中,第一列名称是空字符串“”,第二列是“:1”,第三列是“:2”等等......

希望这有助于其他人。