Home > Database > Mysql Tutorial > How to Select Distinct Rows Grouped by Minimum Value in a Database Table?

How to Select Distinct Rows Grouped by Minimum Value in a Database Table?

Susan Sarandon
Release: 2025-01-17 20:12:10
Original
245 people have browsed it

How to Select Distinct Rows Grouped by Minimum Value in a Database Table?

Select unique rows grouped by minimum value

In the field of database operations, we often encounter the task of grouping data by the minimum value of a specific field while selecting unique rows. Let's say you have a table with multiple rows for each unique identifier, for example:

<code>| key_id | id | record_date | other_cols |
|---|---|---|---|
| 1 | 18 | 2011-04-03 | x |
| 2 | 18 | 2012-05-19 | y |
| 3 | 18 | 2012-08-09 | z |
| 4 | 19 | 2009-06-01 | a |
| 5 | 19 | 2011-04-03 | b |
| 6 | 19 | 2011-10-25 | c |
| 7 | 19 | 2012-08-09 | d |</code>
Copy after login

The goal is to retrieve one row from each unique id, representing the row with the smallest record_date.

A common approach is to use a subquery to identify the minimum record_date for each id and then join it back to the original table:

<code>SELECT *
FROM t
WHERE record_date = (SELECT MIN(record_date) FROM t WHERE id = t.id)</code>
Copy after login

However, this method cannot handle duplicate minimum record_date entries with the same id, which will result in multi-row results.

To solve this problem we need a solution that ensures unique rows. One such approach is to use an inner join and a derived table that calculates the minimum record_date for each id:

<code>SELECT mt.*     
FROM MyTable mt INNER JOIN
    (
        SELECT id, MIN(record_date) AS MinDate
        FROM MyTable
        GROUP BY id
    ) t ON mt.id = t.id AND mt.record_date = t.MinDate</code>
Copy after login

The inner join guarantees that only the rows with the minimum record_date for each id are selected, effectively producing a table of unique rows grouped by minimum value.

The above is the detailed content of How to Select Distinct Rows Grouped by Minimum Value in a Database Table?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template