The MySQL MIN()
function is an aggregate function that you can use to find the smallest number in a table column.
The syntax of the function is as follows:
MIN(expression)
While it can accept an expression, the function only accepts a single argument, so it simply returns the literal value you passed into it:
SELECT MIN(7);
-- +--------+
-- | MIN(7) |
-- +--------+
-- | 7 |
-- +--------+
The example above is not very useful, so let’s see how to use the MIN()
function to find the smallest value in a table column.
Suppose you have a students
column with the following data:
+----+-------+-------+------+
| id | name | score | age |
+----+-------+-------+------+
| 1 | Jack | 72 | 19 |
| 2 | Susan | 48 | 17 |
| 3 | John | 56 | 19 |
| 4 | Fany | 81 | 18 |
+----+-------+-------+------+
You can find the smallest value from score
and age
columns as follows:
SELECT MIN(score) as smallest_score, MIN(age) as smallest_age
FROM students;
-- +----------------+--------------+
-- | smallest_score | smallest_age |
-- +----------------+--------------+
-- | 48 | 17 |
-- +----------------+--------------+
With the help of a subquery, you can also use the MIN()
function to find a single row with the smallest column value.
The following SELECT
statement returns a single row with the smallest score
value:
SELECT * FROM students
WHERE score = (SELECT MIN(score) FROM students);
-- +----+-------+-------+------+
-- | id | name | score | age |
-- +----+-------+-------+------+
-- | 2 | Susan | 48 | 17 |
-- +----+-------+-------+------+
Since the MIN()
function is an aggregate function, you need to use the GROUP BY
clause when you need to SELECT
a regular column together with the function.
Consider the following example:
SELECT age, MIN(score) as smallest_score
FROM students
GROUP BY age;
-- +------+----------------+
-- | age | smallest_score |
-- +------+----------------+
-- | 19 | 56 |
-- | 17 | 48 |
-- | 18 | 81 |
-- +------+----------------+
The returned result set from the query above shows the smallest score from each age
group.
Finally, you can also add a normal WHERE
clause to help narrow down the result of the query.
The following example returns the smallest score from students who are 19
years old:
SELECT MIN(score) as smallest_score
FROM students
WHERE age = 19;
-- +----------------+
-- | smallest_score |
-- +----------------+
-- | 56 |
-- +----------------+
And that’s how the MIN()
function works in MySQL database server. You can use the function to run a query related to finding the smallest value in your database table.
Note that the MIN()
function is most useful when you need to find the minimum value from a table column.
If you need to find the smallest value from a list of defined arguments, then you will need to use the LEAST()
function.
Learn more: Finding the smallest value with the LEAST()
function