我有下表:
TABLE sales
| id | name | date | amount |
|----|------|------------|--------|
| 1 | Mike | 2016-12-05 | 67.15 |
| 2 | Mike | 2016-12-09 | 98.24 |
| 3 | John | 2016-12-12 | 12.98 |
| 4 | Mike | 2016-12-19 | 78.48 |
| 5 | Will | 2016-12-19 | 175.26 |
| 6 | John | 2016-12-22 | 14.26 |
| 7 | John | 2016-12-23 | 13.48 |
我正在尝试创建一个 View ,该 View 将按名称列分组并仅返回最近发送的金额。它应该看起来像这样:
TABLE sales_view
| id | name | date | amount |
|----|------|------------|--------|
| 4 | Mike | 2016-12-19 | 78.48 |
| 5 | Will | 2016-12-19 | 175.26 |
| 7 | John | 2016-12-23 | 13.48 |
我不知道如何去做这个。我想我需要子查询,但我知道如果你尝试在 View 中使用它们,SQL 会生气。
最佳答案
您可以使用元组和带有 group by 的子查询来获取 max(date)
select * from sales
where (name, date) in ( select name, max(date)
from sales
group by name)
关于mysql - 如何使用 SQL 仅选择每个组中最新的一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41795738/