2017-08-02 23 views
0

任何人都可以请解释我下面的查询是什么意思?SQL Server中的校验和示例说明(T-SQL)

我在一些链接中不理解校验和。这让我感到困惑。

SELECT COUNT(DISTINCT CHECKSUM(StudentID, RegistrationDate)) 
FROM RegistrationSummary 

谢谢大家。

+2

文档有一个更好的解释比我能想出。 https://docs.microsoft.com/en-us/sql/t-sql/functions/checksum-transact-sql –

回答

1

校验和计算来自给定列的整数哈希码。它通常用于检查两个不同表中是否存在相同的值,而不必逐一比较每列的枯燥程度。

因此,您提供的查询是计算表中具有与[StudentID]和[RegistrationDate]不同的值的行数。是功能等同的:

SELECT Count(*) FROM 
(
    SELECT DISTINCT StudentID, RegistrationDate 
     FROM RegistrationSummary 
) 

注意,它始终是可能的两种完全不同的价值观,以最终拥有完全相同的散列码的,所以这不是一个完美的技术。但考虑到校验和的创建方式,这是不太可能的,因此当比较数据为十亿分之一可接受时,这是比较数据的合理方法。

0

在这种情况下,它只是允许连接2个不相似的数据类型来检查2列的唯一性。

你可以很轻松地将它改写为...

SELECT COUNT(DISTINCT CONCAT(StudentID, RegistrationDate)) 
FROM RegistrationSummary;