簡體   English   中英

計算表中的所有不同記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM