1

您好,我正在尝试使用 MySQL 选择 3 列之间的最小值。

我面临的问题是,在列中我可能NULL有价值。我怎样才能得到不是的最小价值NULL

跑步select least(1, 3, NULL)会回来NULL,但我想有1一个答案。

谢谢您的帮助。

4

1 回答 1

3

least()处理nulls的方式是记录在案的行为

如果任何参数为NULL,则结果为NULL。不需要比较。

这可能看起来很烦人,但是将值传播null到结果集是您的数据库向您发出信号表明您的值之一未定义的方式;null这与涉及(字符串连接、算术运算等)的其他操作的行为一致。

如果只有第三列可能是null,而其他两列都不是,您可以这样做:

least(col1, col2, coalesce(col3, col1))
于 2020-03-06T22:54:49.260 回答