2017-04-17 244 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