在SQL Server中使用DATETIME进行区分

在SQL Server中使用DATETIME进行区分,sql,sql-server,Sql,Sql Server,运行以下查询时,我有一个名为Logins的表,其中包含列(Connection\u ID,LogOn): SELECT Connection_ID, COUNT(DISTINCT LogOn) AS LogOns FROM Logins GROUP BY Connection_ID HAVING COUNT(DISTINCT LogOn) <> 1 SELECT Connection_ID, LogOn FROM Logins WHERE Connection_ID IN (10

运行以下查询时,我有一个名为Logins的表,其中包含列(Connection\u ID,LogOn):

SELECT Connection_ID, COUNT(DISTINCT LogOn) AS LogOns
FROM Logins 
GROUP BY Connection_ID
HAVING COUNT(DISTINCT LogOn) <> 1
SELECT Connection_ID, LogOn FROM Logins WHERE Connection_ID IN (100, 200)
但当我通过以下查询检查重复的时间时:

SELECT Connection_ID, COUNT(DISTINCT LogOn) AS LogOns
FROM Logins 
GROUP BY Connection_ID
HAVING COUNT(DISTINCT LogOn) <> 1
SELECT Connection_ID, LogOn FROM Logins WHERE Connection_ID IN (100, 200)
我得到以下信息:

-------------------------------------------------
| Connection_ID |               LogOns          |
-------------------------------------------------
|     100       |     2019-07-06T13:19:15.16    |
-------------------------------------------------
|     100       |     2019-07-06T13:19:39.94    |
-------------------------------------------------
|     200       |     2019-02-18T21:52:00.253   |
-------------------------------------------------
|     200       |     2019-02-18T21:52:30.27    |
-------------------------------------------------

正如您所看到的,时间戳没有重复,它们是不同的,但是第一次查询看到它们是相同的,是否对此有任何解释,或者我做错了什么?

您的查询工作正常
COUNT(DISTINCT)
正在计算
LogOn
的不同值。“2”正确识别了这些。如果值相同,则
COUNT(DISTINCT logon)
将返回
1
,而不是
2
,您的查询工作正常
COUNT(DISTINCT)
正在计算
LogOn
的不同值。“2”正确识别了这些。如果值相同,则
COUNT(DISTINCT logon)
将返回
1
,而不是
2
COUNT(DISTINCT logon)
统计
logon
列中DISTINCT值的数量
对于每个
连接ID
s,在
登录中有两个不同的值。
因此,
COUNT()
的结果是
2

即使在
LogOn
中有一个重复值的
Connection\u ID=100
的另一个3d行,结果仍然是
2
,因为只有1个重复值在结果中起作用。

COUNT(DISTINCT LogOn)
统计
LogOn
列中DISTINCT值的数量
对于每个
连接ID
s,在
登录中有两个不同的值。
因此,
COUNT()
的结果是
2

即使在
LogOn
中为
Connection\u ID=100
设置了另一个具有重复值的3d行,结果仍然是
2
,因为在结果中只有1个重复值