在SQL Server中使用DATETIME进行区分
运行以下查询时,我有一个名为Logins的表,其中包含列(Connection\u ID,LogOn):在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
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个重复值