アレッ*_*ックス 8 sql postgresql select postgresql-9.2
我想使用列的索引(数字)执行选择.我试过了:
select 1 from "user"
select '1' from "user"
Run Code Online (Sandbox Code Playgroud)
但他们不按我的意愿行事.
Mur*_*nik 14
你不能在postgres中这样做.选择文字(例如1
或'1'
)只会返回其值.允许这样的索引的唯一地方是在order by
子句中,即使在那里,它们也与表中列的顺序无关,而是在选择列表中:
SELECT col1, col2, col3
FROM my_table
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)
编辑:
一个警告是order by <some index>
结合使用select *
,这似乎与索引相关的表中的列顺序.但是,*
首先将其展开以包含所有列,然后才order by
应用该子句.所以最终,它确实引用了select
列表而不是表的实际结构.
EDIT2:
正如@klin所提到的,postgres' group by
子句也允许索引:
SELECT col1, COUNT(*)
FROM my_table
GROUP BY 1
Run Code Online (Sandbox Code Playgroud)
小智 8
当我需要 FIRST 列(并且我不知道列名)时,我会执行以下操作:
SELECT uno FROM _your_table_ as t(uno);
Run Code Online (Sandbox Code Playgroud)
只需为表和列使用别名!..
如果你真的需要数字 1,你可以这样写:
SELECT "1" FROM _your_table_ as t("1");
Run Code Online (Sandbox Code Playgroud)
双引号......丑陋,但有效!!!!