sql - 如何检查列表是否具有任何不同的值

标签 sql sql-server tsql operators logic

我有一个如下表:

(date1, date2, date3, date4, date5)

我想检查这些日期是否与其他日期不同。 简单的解决方案是:

WHERE date1 <> date2
   OR date1 <> date3
   OR date1 <> date4
   OR date1 <> date5
   OR date2 <> date3
   OR date2 <> date4
   OR date2 <> date5
   OR date3 <> date4
   OR date3 <> date5
   OR date4 <> date5

有什么重要的解决方案吗?

最佳答案

顺便说一句,您的琐碎案例确实可以简化为

WHERE date1 <> date2
   OR date1 <> date3
   OR date1 <> date4
   OR date1 <> date5

使用DeMorgan's Law ,这与

相同
WHERE NOT(date1 = date2
      AND date1 = date3
      AND date1 = date4
      AND date1 = date5)

然后按 transitive property equality relation的,我们知道如果 date1 等于其他 4 个值,那么所有 5 个值都彼此相等。

关于sql - 如何检查列表是否具有任何不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3470690/

相关文章:

SQL 和 Postgres 面试概念

基于测量子集的最小/最大日期的 SQL 性能

SQL查询性能统计信息多次返回

sql - 从 SQL SERVER 中的 3 个值中获取较低的值

mysql - SQL查询,根据另一列选择一列的组

sql-server - 这种 .NET/SQL Server 事务场景是否可行?

sql - 替换字符串中的前导字符

SQL Server,连接到具有相同列的多个表

sql-server - 与 2008 相比,BCP 命令在 SQL Server 2005 中提供不同的输出?

SQL 转换 yyyy-mm-ddTHH :mm:ss to DateTime