How to get the max of two values in MySQL?
我试过但失败了:
1 2 3
| ERROR 1064 (42000): You have an error in your SQL syntax ; check the manual
that corresponds to your MySQL server version for the right syntax to use
near '0)' at line 1 |
使用GREATEST()
例如。:
注意:每当任何单个值包含null时,此函数始终返回null(感谢user @ sanghavi7)
-
示例:从队列中选择最大(queue.count - 1,0);
-
有一件事需要记住,只要当时任何单个值包含null,此函数总是返回null作为答案!
-
还有LEAST
-
如何运行子查询作为GREATEST的参数,以便我可以获得cirtain列的值
-
要防止null出现问题,可以使用ifnull。例如。 select greatest(date1, ifnull(date2,"0000-00-00 00.00:00")) from table1 where date2 is null;会告诉你date1。
-
遗憾的是,如果你使用的是LEAST,并且你输入了类似SELECT LEAST(20000, COUNT(*)) FROM massive_table WHERE index_breaking_filter;的东西,那么在COUNT(*)超过20k之后它就无法快捷逻辑 - 它只需要没有最少的查询。
-
如果某些值可能为null,则可以执行GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
要在一组行中获取列的最大值,请执行以下操作:
要获取每行的一组列,文字或变量的最大值:
-
使用GREATEST注意空值。任何null值都将导致函数返回null。为防止这种情况,您可以执行GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
您可以使用GREATEST函数而不是可空字段。
如果其中一个值(或两者)都可以为NULL,请不要使用它(结果可以为NULL)。
您可以将NULL更改为首选默认值(如果两个值均为NULL)。
-
这就是为什么我真的讨厌MySQL。做这么简单的事情需要做大量的工作。
-
这可以简单地替换为select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue。它太复杂了
-
如果某些值可以为null,则可以执行GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))