【问题标题】:Check equality of n numbers in mysql检查mysql中n个数字的相等性
【发布时间】: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 - 除非我遗漏了什么,否则这里没有两个查询。
  • 那不是重复的...

标签: mysql sql


【解决方案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)
猜你喜欢
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
相关资源
最近更新 更多