Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 统计表中所有不同的记录_Sql_Sql Server - Fatal编程技术网

Sql 统计表中所有不同的记录

Sql 统计表中所有不同的记录,sql,sql-server,Sql,Sql Server,我需要在一个查询中统计表名中的所有不同记录,也不需要使用任何子查询 我的代码是 select count ( distinct *) from table_name 它给出了一个错误: “*”附近的语法不正确 我使用的是Microsoft SQL Server如果要使用DISTINCT关键字,则需要指定要获取DISTINCT记录的列名 例如: SELECT count(DISTINCT Column-Name) FROM table_name 如果要使用DISTINCT关键字,则需要指定要

我需要在一个查询中统计表名中的所有不同记录,也不需要使用任何子查询

我的代码是

select count ( distinct *) from table_name
它给出了一个错误:

“*”附近的语法不正确


我使用的是Microsoft SQL Server

如果要使用
DISTINCT
关键字,则需要指定要获取DISTINCT记录的列名

例如:

SELECT count(DISTINCT Column-Name) FROM table_name 

如果要使用
DISTINCT
关键字,则需要指定要获取不同记录的列名

例如:

SELECT count(DISTINCT Column-Name) FROM table_name 
试试这个-

SELECT COUNT(*)
FROM 
    (SELECT DISTINCT * FROM [table_name]) A
试试这个-

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

我担心,如果您不想使用子查询,实现这一点的唯一方法是用表中列的串联替换
*

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
希望此查询提供您所需的信息。

您可以使用CTE

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

希望此查询提供您所需的信息。

正如其他人提到的,您不能将
DISTINCT
*
一起使用。此外,最好使用列名而不是
*
,例如表的唯一键/主键

SELECT COUNT( DISTINCT id )
  FROM table

正如其他人提到的,您不能将
DISTINCT
*
一起使用。此外,最好使用列名而不是
*
,例如表的唯一键/主键

SELECT COUNT( DISTINCT id )
  FROM table

为什么不能使用子查询?请从无法放置的表_name*中使用select distinct count(*),您需要在其中有一个列名。这就是语法错误。为什么不能使用子查询?使用“从无法放置的表_name中选择不同的计数(*),您需要在那里有一个列名。这就是语法错误。您的示例似乎不是很清楚;)对不起,我回答时是另一条短信@Stefanozaniny你的例子似乎不是很清楚;)对不起,我回答时是另一条短信@Stefanozanii不想使用子查询。你为什么不想使用它?我不想使用子查询。你为什么不想使用它?虽然这个代码片段可能是解决方案,但确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。虽然此代码片段可能是解决方案,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。