[英]count all the distinct records in a table
我需要使用單個查詢計算表名中的所有不同記錄,並且不使用任何子查詢。
我的代碼是
select count ( distinct *) from table_name
它給出了一個錯誤:
'*'附近的語法不正確。
我正在使用Microsoft SQL Server
嘗試這個 -
SELECT COUNT(*)
FROM
(SELECT DISTINCT * FROM [table_name]) A
我擔心如果你不想使用子查詢,唯一的方法就是用表中列的串聯替換*
select count(distinct concat(column1, column2, ..., columnN))
from table_name
為了避免不期望的行為(如1和31的串聯變得等於13和1的串聯),您可以添加合理的分隔符
select count(distinct concat(column1, '$%&£', column2, '$%&£', ..., '$%&£', columnN)
from table_name
你可以使用CTE。
;WITH CTE AS
(
SELECT DISTINCT * FROM TableName
)
SELECT COUNT(*)
FROM CTE
希望此查詢能夠滿足您的需求。
正如其他人提到的,你不能使用帶有*
DISTINCT
。 最好使用列名而不是*
,就像表的唯一鍵/主鍵一樣。
SELECT COUNT( DISTINCT id )
FROM table
select distinct Name , count(Name) from TableName
group by Name
having count(Name)=1
select @@rowcount
如果要使用DISTINCT
關鍵字,則需要指定要在哪些基礎上獲取不同記錄的列名。
例:
SELECT count(DISTINCT Column-Name) FROM table_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.