2017-04-17 6 views
0

ich die Anzahl aller Spalten erhalten möchten, die in der query.I abgerufen werden, haben den folgenden Code verwendet:SQL-Abfrage - zählen mit Unterabfrage

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

ich eine Fehlermeldung bekommen:

Falscher Fehler bei; AS, ID oder quoted_ID erwartet

Wenn ich wie unten hinzufügen:

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

Die Abfrage funktioniert nun aber die Spaltennamen zu dem gegebenen Alias ​​nicht umbenannt wird. Was ist die Logik dahinter?

+0

Einige DBMS erfordern abgeleitete Tabellen, um einen Alias ​​zu haben, einige nicht. Welches DBMS benutzt du? –

+0

Ich benutze Microsoft SQL Server 08, Mein Anliegen ist, auch nachdem der Aliasname der Spaltenname nicht geändert wurde, wird es als Kein Spaltenname angezeigt. – akash

+0

Sie haben der abgeleiteten Tabelle einen Alias ​​zugewiesen, nicht die Spalte. Wenn Sie der ** Spalte ** einen Alias ​​geben wollen, müssen Sie ihn angeben _there_, 'count (*) als count von (...) als x' –

Antwort

0

In Sql müssen Sie Alias ​​auf Unterabfrage geben. Also das ist der Grund, warum die zweite Abfrage funktioniert und erste ausfällt

+0

Die zweite Abfrage funktioniert aber Der Spaltenname wird nicht mit dem in der Abfrage angegebenen Aliasnamen umbenannt. Er wird als "Kein Spaltenname" angezeigt. – akash

0

ich weiß nicht, was Sie erreichen wollen, aber um dies zu korrigieren

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

subquery fungieren als Ihre Tabelle abfragen von deshalb braucht es einen Namen oder Alias ​​

+0

Der Aliasname sollte direkt nach der Spalte verwendet werden, die vor "von" umbenannt werden soll wird der Spaltenname ohne den Aliasnamen angezeigt – akash

+0

wird es offiziell zu sagen, eine abgeleitete Tabelle muss einen Namen haben, soweit ich weiß – maSTAShuFu