SQL新手。如果这个问题是基本问题,请原谅我。我有办法在下面这样做吗
SELECT COLUMN1 as CUSTOM_NAME, <wildcard for remaining columns as is> from TABLE;
我只希望COLUMN1在最终结果中出现一次
答案 0 :(得分:1)
无法使用常规SQL *制作那种动态SELECT list。
这是一件好事。编程变得越来越困难,越是动态。即使是简单的*
语法,虽然在许多上下文中很有用,但会在生产代码中引起问题。 Oracle SQL语法已经比大多数传统编程语言更复杂,添加了一些元语言来描述查询返回的内容可能是一场噩梦。
*嗯,您可以使用Oracle data cartridge,DBMS_XMLGEN或trick with the PIVOT clause创建内容。但是这些解决方案中的每一个都会非常复杂,当然也不像输入列那么简单。
答案 1 :(得分:0)
这就像你将得到的那样接近。 将重要的列放在前面是非常方便的, 同时如果需要可以滚动到其他人。 COLUMN1将最终在那里两次。
SELECT COLUMN1 as CUSTOM_NAME,
aliasName.*
FROM TABLE aliasName;
答案 2 :(得分:0)
如果您有很多列,则可能值得自动生成完整的列列表,而不是依赖*选择器。
因此,采用两步方法是使用自定义的前N个列和其他列的未指定顺序生成列列表,然后在实际的select语句中使用该生成的列表。
-- select comma separated column names from table with the first columns being in specified order
select
LISTAGG(column_name, ', ') WITHIN GROUP (
ORDER BY decode(column_name,
'FIRST_COLUMN_NAME', 1,
'SECOND_COLUMN_NAME', 2) asc) "Columns"
from user_tab_columns
where table_name = 'TABLE_NAME';
用您的真实姓名替换TABLE_NAME
,FIRST_COLUMN_NAME
和SECOND_COLUMN_NAME
,并根据需要调整显式列的列表。
然后执行查询并使用结果,该结果应类似于
FIRST_COLUMN_NAME, SECOND_COLUMN_NAME, OTHER_COLUMN_NAMES
这当然是5位数列的开销,但是,如果您遇到的列数只有3位的公司数据库,这会很有趣。