我有一个带有targeted_refills列的MySQL表:(唯一id,主键)pat_name,,,,,,,,,,,,,,,,,,pat_phonerx_numberdrug_nameqty_displast_dateqty_leftprice_codelast_pricelast_contactdoc_nameehfuserid
我要做的是为每个userid. 我要列出的记录是基于该字段的最新last_date记录,但是如果该用户有多个具有最近日期的记录,那么我希望它选择该字段中具有最大值的字段last_price。在极少数情况下,有两条记录匹配last_date和last_price(不应该发生但可能),我真的不在乎选择哪个,因此可以从最大值中选择它,id因为它是唯一的和主键。
编辑:
我试过这个查询,我从另一个人的问题拼凑而成:
SELECT t1.*
FROM `targeted_refills` AS t1
LEFT OUTER JOIN `targeted_refills` AS t2
ON t1.userid = t2.userid
AND (t1.last_date < t2.last_date
OR (t1.last_date = t2.last_date AND t1.last_price < t2.last_price))
WHERE t2.userid IS NULL;
它在到达我想去的地方方面做得很合理,但它比我想要的要多一些记录。我现在正在比较,看看它提取了哪些额外的记录以及原因。它也需要很长时间才能运行。