选择前20列

时间:2016-10-04 15:18:45

标签: sql oracle

是否可以从我的表格中选择前20列,而无需命名选择中的每一列?

当我选择时,列总是以相同的方式排序,因此必须有一些基础顺序。

3 个答案:

答案 0 :(得分:1)

以下查询为您构建SQL。它使用字典表all_tab_columns来获取表的列名。

SELECT ' SELECT '
  || REPLACE(LISTAGG(column_name,',') WITHIN GROUP( ORDER BY column_id),',',','
  ||CHR(10))
  || ' FROM YOUR_TABLE'
FROM all_tab_columns
WHERE owner   ='YOUR_SCHEMA_NAME'
AND table_name='YOUR_TABLE_NAME'
AND column_id <= 20;

答案 1 :(得分:0)

您可以使用列索引而不是列名,例如选择0,1,2,.....

答案 2 :(得分:-1)

SQL Server数据库中有一个名为sysColumns的表,它记录每个表中的所有列。我认为这是一个SQL标准,也应该在Oracle中。

编辑:感谢@ davegreen100的评论,这张表在Oracle中,但名为DBA_TAB_COLUMNS

尝试运行Select * from DBA_TAB_COLUMNS并查看结果,并从那里开始工作。

如果它存在(在Oracle中),你最终会得到像

这样的东西
Select name from DBA_TAB_COLUMNS
Where id = @tableId  -- <--- the id of the table 
   and colOrder <= 20

您的最终SQL可能必须使用上述

的输出动态生成
相关问题