2017-04-17 128 views
0

我想这是在query.I检索到的所有列的计数数使用了下面的代码:SQL查询 - 与子查询

select count (*) 
from ( 
    select distinct ID,salary,name,location 
    from test 
) ; 

我收到一条错误消息:

错误的错误;期待AS,ID或quoted_ID

当我添加如下:

select count (*) 
from (
    select distinct ID,salary,name,location 
    from test 
) as count;

的查询工作,但现在列名不重命名为指定的别名。这背后的逻辑是什么?

+0

某些DBMS需要派生表具有别名,有些不需要。你正在使用哪个DBMS? –

+0

我正在使用Microsoft SQL Server 08,我的担心是甚至在给出别名后列名不变,它显示为无列名。 – akash

+0

您给派生表一个别名,而不是列。如果你想给**列**一个别名,你必须指定它_there_,'count(*)as count from(...)as x' –

回答

0

在Sql中你必须给子查询提供别名。所以这是第二个查询工作的原因,第一个失败

+0

第二个查询工作但列名不会使用查询中给出的别名重命名,它会显示为“无列名” – akash

0

我不知道你正在努力实现的,但改正,这将是

select count (*) from (select distinct ID,salary,name,location from test) as myTAble; 

子查询将作为您的表查询什么因此它需要一个 名称或别名

+0

在应该重命名为“from”之前的列后面应该使用别名。本代码中的任何方法,列名不显示别名 – akash

+0

将正式派生的表格需要有一个名字,据我所知 – maSTAShuFu