我有一个带有很多列的oracle数据库表,我正在运行一些查询。
我不知道我在查询中究竟要查找哪些数据,所以我想返回所有列,但我不想搜索并查看我知道有意义的列。
假设一个表(表1),其中列A,列B,列C ....列Z -
有没有办法基本上说“选择C列,J列,F列,Q列,然后是表1中的其余列”?
保持伪sql,运行:
从表1
中选择C列,J列,F列,表1。*
没有帮助,因为即使我不介意重复项,oracle也会将它们视为模糊定义的列,从而返回错误。
答案 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
确保没有相同名称的列。