我在SQL Server中有一个非常简单的查询。但这是错误的。
select * from(
select emp_name + ' ' + emp.surname as employee from ca_contact
)
此查询无效。 但是,当我写下面的内容时,它正在起作用:
select emp_name + ' ' + emp.surname as employee from ca_contact
答案 0 :(得分:2)
你需要一个别名。在这种情况下foobar
select * from
(select emp_name + ' ' + emp.surname as employee from ca_contact) foobar
答案 1 :(得分:1)
我认为您需要指定表别名 -
select * from(
select emp_name + ' ' + emp.surname as employee from ca_contact
) t1
答案 2 :(得分:0)
在SQL Server中,必须为所有派生表提供别名[例外情况是,如果不从中选择任何内容,例如在IN/EXISTS
条款中。从SQL Server 2005开始,您正在执行的操作的替代方法是使用公用表表达式,顺便提一下,现在在最新版本的Oracle中也可以使用它。
简单无意义的别名
select * from
(select emp_name + ' ' + surname as employee from ca_contact) [ ]
公用表表达式,同时命名列
;WITH [ ](employee) AS (
select emp_name + ' ' + surname
from ca_contact)
select * from [ ]
FWIW,您可以省略CTE列名并从查询中派生出来
WITH [ ] AS (
select emp_name + ' ' + surname as employee
from ca_contact)
select * from [ ]
注意:由于您的查询中未定义表格/别名emp.surname
,因此无法确定如何emp
答案 3 :(得分:0)
请尝试以下查询
select employee from (select emp_name + ' ' + emp.surname as employee from ca_contact) as test