可以使用子查询和`MAX()`函数结合来实现获取最新的一条数据。假设有以下的数据:

```
| id | name | date       |
|----|------|------------|
| 1  | Bob  | 2019-01-01 |
| 2  | Jack | 2019-02-01 |
| 3  | Tom  | 2019-03-01 |
| 4  | Amy  | 2019-04-01 |
| 5  | Sam  | 2019-05-01 |
| 6  | Ted  | 2019-06-01 |
```

如果你想按照`name`分组并获取每个分组最新的一条数据,可以使用以下的 SQL 查询语句:

```
SELECT t1.id, t1.name, t1.date
FROM your_table t1
INNER JOIN (
  SELECT name, MAX(date) AS max_date
  FROM your_table
  GROUP BY name
) t2 
ON t1.name = t2.name AND t1.date = t2.max_date;
```

这条 SQL 查询语句会返回以下结果:

```
| id | name | date       |
|----|------|------------|
| 4  | Amy  | 2019-04-01 |
| 2  | Jack | 2019-02-01 |
| 5  | Sam  | 2019-05-01 |
| 3  | Tom  | 2019-03-01 |
| 6  | Ted  | 2019-06-01 |
| 1  | Bob  | 2019-01-01 |
``` 

其中,子查询的作用是获取每个分组(即每个`name`)中的最新日期,而外层查询则使用这个最新日期和`name`进行`JOIN`操作,查询出最新的记录。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐