如何从表中选择所有列,以及 ROWNUM 等其他列?
Posted
技术标签:
【中文标题】如何从表中选择所有列,以及 ROWNUM 等其他列?【英文标题】:How do I select all the columns from a table, plus additional columns like ROWNUM? 【发布时间】:2011-04-29 07:23:32 【问题描述】:在 Oracle 中,可以执行 SELECT
语句,将行号作为结果集中的列返回。
例如,
SELECT rownum, column1, column2 FROM table
返回:
rownum column1 column2 1 乔·史密斯 2 鲍勃·琼斯但我不想手动指定每一列。我想做类似的事情:
select rownum,* from table
rownum column1 column2 column3 column4
1乔史密斯1 2
2鲍勃·琼斯3 4
有什么想法吗?
【问题讨论】:
【参考方案1】:用表名限定 *:
select rownum, table.* from table
【讨论】:
添加此注释以供将来参考:如下面的 Pierre Cattin 所示,这不适用于别名。因此,如果您使用别名,则需要使用别名而不是表名。select rownum, table_name.* from table_name
或 select rownum, t.* from table_name t
【参考方案2】:
Dave 的回答很棒,我想补充一点,也可以通过将通配符作为第一列来做到这一点:
select *,rownum from table
有效,但以下无效:
select rownum,* from table
我已经在 mysql 上进行了测试。
【讨论】:
"在 MySQL 上测试" - 不使用表名 (table.*
) 这将不适用于提出此问题的 Oracle。
仍然无法在 Oracle 19c 上运行,出现错误 ORA-00923: FROM keyword not found where expected
。接受的答案虽然有效。【参考方案3】:
不幸的是,我不认为有办法做到这一点,最简单的可能是使用 id,count(*) 的内联表与自身进行内部连接,并放置一个外部选择语句
【讨论】:
【参考方案4】:戴夫的回答在 Oracle 11g 上对我不起作用(表。* 没有别名)。以下工作:
select rownum, t.* from table t
【讨论】:
以上是关于如何从表中选择所有列,以及 ROWNUM 等其他列?的主要内容,如果未能解决你的问题,请参考以下文章