如何从表中选择所有列,以及 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_nameselect 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 等其他列?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表中选择所有列并计数?

如何使用 MySQL 查询从表中选择除一列之外的所有内容? [复制]

仅从表中选择一些列

如何通过 Jquery 从表中查找按列指定的行的索引和值?

从表中选择多个列,但按一个分组

多键值对搜索