是否可以从我的表格中选择前20列,而无需命名选择中的每一列?
当我选择时,列总是以相同的方式排序,因此必须有一些基础顺序。
答案 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可能必须使用上述
的输出动态生成