2017-05-10 64 views
0

我需要使用單個查詢統計表名中的所有不同記錄,而且不使用任何子查詢。統計表中的所有不同記錄

我的代碼是

select count (distinct *) from table_name 

它給出了一個錯誤:

Incorrect syntax near '*'.

我使用Microsoft SQL Server

+1

爲什麼你不能使用子查詢? – jarlh

+0

使用從表名稱中選擇不同的計數(*) – nazark

+0

您不能放*,您需要在那裏有一個列名稱。這是語法錯誤。 –

回答

-1

如果你想使用DISTINCT關鍵字,你需要指定列名你想在哪些基地獲得不同的記錄。

例子:

SELECT count(DISTINCT Column-Name) FROM table_name 
+0

你的例子似乎沒有很明確的說明;) –

+0

對不起,這是我回答時的另一個文本。 @StefanoZanini –

1

試試這個 -

SELECT COUNT(*) 
FROM 
    (SELECT DISTINCT * FROM [table_name]) A 
+0

我不想使用子查詢。 –

+0

爲什麼你不想使用它? – Raj

0

我怕,如果你不想使用子查詢,實現,唯一的辦法是用替代*表格中的列連接

select count(distinct concat(column1, column2, ..., columnN)) 
from table_name 

爲了避免不良行爲(如conca tenation 1和31等於13和1的連接)你可以添加一個合理的分隔符

select count(distinct concat(column1, '$%&£', column2, '$%&£', ..., '$%&£', columnN) 
from table_name 
0

你可以使用CTE。

;WITH CTE AS 
    (
    SELECT DISTINCT * FROM TableName 
) 
    SELECT COUNT(*) 
    FROM CTE 

希望這個查詢給你你需要什麼。

0

正如其他人提到的那樣,您不能使用DISTINCT*。此外,最好使用列名稱而不是*,如表格的唯一鍵/主鍵。

SELECT COUNT(DISTINCT id) 
    FROM table 
0
select distinct Name , count(Name) from TableName 
group by Name 
having count(Name)=1 
select @@rowcount 
+0

儘管此代碼片段可能是解決方案,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-基於代碼的答案)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – milo526

相關問題