【发布时间】:2013-01-04 20:38:39
【问题描述】:
我想知道是否有一个通用的 SQL 语法允许从子选择中选择无别名的数字文字:
-- Seems to work in MySQL / Oracle
select table_alias."1"
from (
select 1 from dual
) table_alias
我知道我可以为子选择中的字段设置别名:
-- Works everywhere
select table_alias.column_alias
from (
select 1 column_alias from dual
) table_alias
但是如果我无法控制子选择怎么办?此外,一些 RDBMS 允许在为表设置别名时同时提供表和列别名:
-- Seems to work in Postgres / SQL Server
select table_alias.column_alias
from (
select 1 from dual
) table_alias (column_alias)
但某些 RDBMS(例如 MySQL)无法做到这一点。还有其他方法吗?
- 注意:这与任何特定的 RDBMS 无关,而只是一般的 SQL
- 注意:我想省略星号,即没有
select *...
这里有一个相关的问题:
Is there a generic workaround to express a derived column list in Oracle (and MySQL)?
【问题讨论】:
-
以 select * from ()... 运行它?
-
@Randy,我忘了说我想省略星号
-
这是 MySQL 还是 SQL Server(或其他)?在 SQL Server 中,使用派生表时必须为列指定别名。
-
@Jerad:像第三个例子一样?例如,这在 Postgres 中也是有效的......
-
如果它是一个硬连线文字,为什么还要把它放在子查询中呢?