Use GREATEST()
E.g.:
SELECT GREATEST(2,1);
Note: Whenever if any single value contains null at that time this function always returns null (Thanks to user @sanghavi7)
To get the maximum value of a column across a set of rows:
SELECT MAX(column1) FROM table; -- expect one result
To get the maximum value of a set of columns, literals, or variables for each row:
SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results
GREATEST
. Any null value will cause the function to return null. To prevent this, you can do GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
You can use GREATEST function with not nullable fields. If one of this values (or both) can be NULL, don't use it (result can be NULL).
select
if(
fieldA is NULL,
if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
) as maxValue
You can change NULL to your preferred default value (if both values is NULL).
select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue
. It is overcomplicated
GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Success story sharing
LEAST
GREATEST
so that i can get values for a cirtain columnselect greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;
will get you date1.GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))