检查mysql中n个数字的相等性

Posted

技术标签:

【中文标题】检查mysql中n个数字的相等性【英文标题】:Check equality of n numbers in mysql 【发布时间】:2012-12-03 15:19:23 【问题描述】:

我需要检查所有数字是否相同。这些值来自不同的列。签名应该允许放置任意数量的列(如COALESCE(...) 方法)

SELECT equality(42, 42, 42) 

应该返回true

SELECT equality(23, 42, 133)

应该返回false

有什么好的方法来编码吗?

当时我是这样做的:

SELECT (x1 = x2 AND x2 = x3);

但我希望有更优雅的方式。

【问题讨论】:

@njk - 除非我遗漏了什么,否则这里没有两个查询。 那不是重复的... 【参考方案1】:

使用这个:

SELECT GREATEST(42, 42, 42) = LEAST(42, 42, 42)

【讨论】:

不。查看不同的值。 他的意思是SELECT GREATEST(42, 42, 42) = LEAST(42, 42, 42) @RaphaëlAgneaudeSelve 谢谢。这是我的错。更新了。 @ÁlvaroG.Vicario 是的,伙计,对不起。那里的错字。因此,它会检查集合中较大和较小的值是否相等。 +1 很棒的洞察力。我认为唯一的失败可能是如果所有值都是NULL 时也希望返回true,即使NULL-safe equality operator <=> 也无济于事,因为如果集合至少包含一个NULL 并且至少包含一个NULL,它也会返回true一位非NULL。我怀疑这种情况下的解决方案是SELECT COALESCE(GREATEST(42,42,42), 42,42,42) <=> LEAST(42,42,42)

以上是关于检查mysql中n个数字的相等性的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数组中的数字是不是相等?

如何在javascript中检查两个数字是不是相等[重复]

对于题库中 C.数字 中算重的情况的解释

数字的二进制。如何检查相等的数字系列?

检查mysql表中的变量并调整数字

[]==![] 为什么等于true?