给出此sells
表(在MySQL
中):
id | person | state | amount
1 | Ringo | CA | 3$
2 | Paul | CA | 10$
3 | John | MA | 2$
4 | Ringo | CA | 6%
5 | Ringo | MA | 12$
我们想创建一个SQL,以获取每个州person
的最新金额-诸如此类:
person | CA | MA
Ringo | 6$ | 12$
Paul | 10$| -
John | - | 2$
我们也希望此查询具有足够的动态性,因此,如果有一条具有新状态(例如TX)的新记录,我们将自动获取它。
6 | George | TX | 15$
将导致:
person | CA | MA | TX
Ringo | 6$ | 12$ | -
Paul | 10$| - | -
John | - | 2$ | -
George| - | - | 15$
我们对此查询尝试了Group by
:
select * from sells where id in(
select max(id) from sells
group by person, state
)
这似乎为我们提供了正确的数据,但是我们需要帮助以实现所需结果的飞跃
答案 0 :(得分:0)
您可能可以使用更简单的SQL来获取所需的所有数据,并在应用程序代码中进一步格式化以获取所需的格式。
一个人在每种状态下所花的一行表格:
id | person | state | amount
4 | Ringo | CA | 6$
5 | Ringo | MA | 12$
2 | Paul | CA | 10$
3 | John | MA | 2$
SQL查询:
SELECT id, person, state, amount
FROM sells
GROUP BY person, state
HAVING id = MAX(id)