如何检查列表是否具有任何不同的值
我有一个如下表:
(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
有非平凡的解决方案吗?
I have a table like the following:
(date1, date2, date3, date4, date5)
and I want to check if ANY of these dates is different than any other.
The trivial solution is:
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
Any nontrivial solutions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
顺便说一句,您的小案例实际上可以简化为仅
使用德摩根定律,这与
相等关系,我们知道如果 date1 等于其他 4 个值,那么所有 5 个值都等于彼此。
Just as an aside, your trivial case can really be simplified to just
Using DeMorgan's Law, this is the same as
and then by the transitive property of the equality relation, we'd know that if date1 is equal to the other 4 values, then all 5 are equal to each other.
如果表有主键,我想这不是小事。
if the table has a primary key, I guess this is not trivial.
按每个值分组,将按计数分组与原始计数进行比较
group by each value, compare the grouped by count to the original count
如果您使用的是 SQL Server 2005+,您可以执行以下操作:
If you are using SQL Server 2005+, you could do something like:
对我来说,用一个例子更容易想象。这可行,但我不确定我是否过于复杂了。
This was easier for me to picture with an example. This works, but I am not sure if I have overcomplicated it.