SELECT t1.payment_id
,t1.emp_id
,t1.cargeTime
,t1.payment
FROM emps t1
LEFT OUTER JOIN emps t2
ON t1.emp_id = t2.emp_id
AND t1.chargeTime>=t2.chargetime
GROUP BY t1.payment_id,t1.emp_id,t1.cargeTime,t1.payment
HAVING count(1)<=3
此查询应为您提供每个 emp_id 的最后三笔(最近的)付款。如果您需要前三个,AND t1.chargeTime>=t2.chargetime 将被写为 AND t1.chargeTime<=t2.chargetime。
尝试:
不幸的是,MySQL 没有其他 SQL 语言所具有的方便的分析功能。您可以使用一些左外连接技巧来模拟它们,非常困难:
此查询应为您提供每个 emp_id 的最后三笔(最近的)付款。如果您需要前三个,AND t1.chargeTime>=t2.chargetime 将被写为 AND t1.chargeTime<=t2.chargetime。
您可以在此处对其进行测试http://sqlfiddle.com/#!2/3c1f9/1/0请注意,为了快速起见,我已将 chargeTime 定义为 int,但也应与日期时间一起使用。