检查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个数字的相等性的主要内容,如果未能解决你的问题,请参考以下文章