如何在SQL中的一个特定行中找到最小非空列?
发布时间:2020-12-12 08:56:32 所属栏目:MsSql教程 来源:网络整理
导读:我试图在同一个表中找到一行中的两列中最小的数字,其中一列可能在特定行中为空.如果其中一列为空,我希望该行返回的另一列中的值为这种情况下最低的非空列.如果我在 MySQL 5.1中使用least()函数: select least(1,null) 这返回null,这不是我想要的.在这种情况
我试图在同一个表中找到一行中的两列中最小的数字,其中一列可能在特定行中为空.如果其中一列为空,我希望该行返回的另一列中的值为这种情况下最低的非空列.如果我在
MySQL 5.1中使用least()函数:
select least(1,null) 这返回null,这不是我想要的.在这种情况下,我需要查询返回1. 我已经能够得到我想要的结果一般这个查询: select least(coalesce(col1,col2)),coalesce(col2,col1)) 只要col1和col2都不为空,每个coalesce语句将返回一个数字,而最小()处理查找最低的. 有没有更简单/更快的方式来做到这一点?在这种情况下,我使用的是MySQL,但欢迎采用一般解决方案. 解决方法对于MySQL 5.0.13( http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_least),不幸的是(对于您的情况)LEAST的行为已更改 – 仅当所有参数为NULL时,才会返回NULL.这个变化甚至被报告为一个错误:http://bugs.mysql.com/bug.php?id=15610 您的解决方案是推荐的解决方法之一.另一个可以使用IF运算符: SELECT IF(Col1 IS NULL OR Col2 IS NULL,COALESCE(Col1,Col2),LEAST(Col1,Col2)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |