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-11Id 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的part 5-12的最后一条记录是id=2
用户408的part 1-11的最后一条记录是id=6
发布于 2013-02-08 20:39:57
SELECT a.*, c.* -- select columns youw ant
FROM Purchase a
INNER JOIN
(
SELECT user, MAX(ID) max_ID
FROM Purchase
GROUP BY user, pur_type
) b ON a.user = b.user AND
a.ID = b.max_ID
INNER JOIN goods c
ON a.pur_type = c.parts
WHERE a.USER = 408为了获得更好的性能,请在表goods的列parts上以及在pur_type上添加索引
发布于 2013-02-08 20:52:30
对现有查询进行简单修改:
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 purchase p2
ON ( p1.pur_type= p2.pur_type AND p1.id < p2.id AND p1.user=p2.user)
WHERE p2.id IS NULL and p1.user = 408https://stackoverflow.com/questions/14772760
复制相似问题