【发布时间】:2025-12-10 05:40:01
【问题描述】:
1.采购表
Id user pur_type
----------------------
1 408 5-12
2 408 5-12
3 222 1-11
4 222 5-12
5 408 1-11
6 408 1-11
2。商品表
Id parts days
-----------------
1 1-11 50
2 5-12 40
我实现了这样的查询
SELECT p1.id, p1.user, p1.pur_type, g.parts, g.days
FROM purchase p1
INNER JOIN goods g ON p1.pur_type = g.parts
LEFT JOIN goods p2 ON ( p1.pur_type= p2.pur_type
AND p1.id < p2.id )
WHERE p2.id IS NULL
结果只是每个 pur_type 的最后一条记录
Id user pur_type parts days
---------------------------------
4 222 5-12 5-12 40
6 408 1-11 1-11 50
如何从每个pur_type 的purchase 表中获取一个特定用户的最后一条记录?
例如对于用户 408 需要结果:
Id user parts days
-------------------------
2 408 5-12 40
6 408 1-11 50
结果说明:
用户 408 的最后一条记录 fot part 5-12 是 id=2
用户 408 的 part 1-11 的最后一条记录是 id=6
【问题讨论】:
-
当然
LEFT JOIN goods p2应该是LEFT JOIN purchase p2? -
goods表中的id列其实是多余的吗?
标签: mysql sql group-by greatest-n-per-group