Skip to content
Advertisement

Return multiple records, but it should limit 1 record per each similar condition

+----+--------------------+
| id | name  |      age   |      
+----+--------------------+
|  1 | James  |        20 |
|  2 | Ruth   |        20 |
|  3 | Blue   |        15 |
|  4 | Redd   |        15 |
|  5 | Arkk   |        30 |
|  6 | Arthur |        30 |

Expected results:

+----+--------------------+
| id | name  |      age   |      
+----+--------------------+
|  1 | James  |        20 |
|  3 | Blue   |        15 |
|  6 | Arthur |        30 |

Explanation: In the results, James is representing all people aged 20. And Blue is representing all people aged 15. And so on..

Question: How can this query type of query be achieved? Thank you.

Advertisement

Answer

If you want one name per age, you can use:

select max(name), age
from t
group by age;

If you want the first row, then:

select t.*
from t
where t.id = (select min(t2.id) from t t2 where t2.age = t.age);
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement