一张表有年龄,身高两个字段,如何用SQL取每个年龄段身高最高的那一条数据
时间: 2024-11-24 16:43:53 浏览: 4
mysql数据表的基本操作之表结构操作,字段操作实例分析
如果你想从一张表中获取每个年龄段(比如按每5岁划分)的最高身高数据,可以使用SQL的`ROW_NUMBER()`或者分组查询结合`LIMIT`来实现。这里假设表名为`users`,字段分别为`age`和`height`,且没有年龄相同的身高更高的记录。以下是两种常见的方式:
**方法一:MySQL(不支持窗口函数)**
```sql
SELECT *
FROM (
SELECT age, height,
@row_num := IF(@prev_age = age, @row_num + 1, 1) AS row_num,
@prev_age := age
FROM users, (SELECT @row_num := 0, @prev_age := NULL) t
ORDER BY age, height DESC
) ranked_users
WHERE row_num = 1;
```
**方法二:PostgreSQL、SQL Server 或者支持窗口函数的数据库**
```sql
WITH ranked_users AS (
SELECT age, height,
ROW_NUMBER() OVER (PARTITION BY FLOOR(age / 5) ORDER BY height DESC) as row_num
FROM users
)
SELECT * FROM ranked_users WHERE row_num = 1;
```
阅读全文