Oracle数据库:如何选择所有但首先返回某些列?

时间:2012-03-15 19:44:50

标签: sql oracle oracle11g

背景

我有一个带有很多列的oracle数据库表,我正在运行一些查询。

我不知道我在查询中究竟要查找哪些数据,所以我想返回所有列,但我不想搜索并查看我知道有意义的列。

问题

假设一个表(表1),其中列A,列B,列C ....列Z -

有没有办法基本上说“选择C列,J列,F列,Q列,然后是表1中的其余列”?

我尝试过的事情

保持伪sql,运行:

  

从表1

中选择C列,J列,F列,表1。*

没有帮助,因为即使我不介意重复项,oracle也会将它们视为模糊定义的列,从而返回错误。

2 个答案:

答案 0 :(得分:14)

除了指定每列之外,没有简单易行的方法。

但如果您不介意重复项,则不关心列名称,您可以为这些列添加别名:

Select 
  ColumnC as ColumnC1, 
  ColumnJ as ColumnJ1, 
  ColumnF as ColumnF1,
  t.* 
from 
  Table1 as t

仅仅为了演示,我也将Table1别名。您可以省略as关键字,但我觉得它更具可读性。

请注意,虽然这些额外的列对于Oracle来说并不难以查询,但它们确实会产生额外的流量。对于测试,此解决方案很好,但在生产代码中,我会选择只选择您需要的列,并且只选择一次。这只是一点额外的工作。毕竟,你有多少列? :)

答案 1 :(得分:5)

但是,您可以通过对您专门选择的列进行别名来解决此问题。例如

SELECT columnC new_columnC, columnJ new_columnJ, columnF new_columnF, t.*
  FROM table1 t

确保没有相同名称的列。