有人可以帮忙吗?我的麻烦是人们可能具有相同的ID或不同的名称拼写。如果按ID分组(不是主键),则行数与按ID和名称分组的行数不同。在选择中仍然具有ID和名称的同时,如何按ID分组?
Create Table Client(ID Int, Name Varchar(15))
Insert Into Client VALUES(11,'Batman'),(22,'Batman'),(33,'Robin'),(44,'Joker'),(44,'The Joker'),(33,'Robin')
Select Count(ID) From Client
Select * From Client
-这将返回4行
Select Count (ID)
From Client
Group By ID
-返回5行,因为Joker和The Joker具有不同的名称,但具有相同的ID。我想按ID而不是名称来计数,因为有很多错别字。
Select Count (ID), [Name] , ID
From Client
Group By ID, [Name]
我该如何执行并使其起作用?
Select Count (ID), [Name] , ID
From Client
Group By ID --<< Always throws and error unless I include Name, which
--returns too many rows.
它应该返回
Count Name ID
1 Batman 11
1 Batman 22
2 Joker 44 --<< Correct
2 Robin 33
And not
Count Name ID
1 Batman 11
1 Batman 22
2 Robin 33
1 Joker 44 --Wrong
1 The Joker 44 --Wrong
答案 0 :(得分:0)
使用select count(*) from ClientLog
将准确告诉您表中有多少条记录。如果您的ID
字段是主键,那么select count(ID) from ClientLog
应该返回相同的数字。
您的第一个查询有点令人困惑,因为您是按ID分组而不显示ID。因此,您可能会为每条记录获得一行,其中行值为1。
您的第二个查询也有点混乱,因为没有聚合发生(因为您的ID
字段是唯一的)。
您要在查询中具体获取什么(如果除了表中有多少条记录之外,还有什么其他内容)?