我有一个带有targeted_refills
列的MySQL表:(唯一id
,主键)pat_name
,,,,,,,,,,,,,,,,,,pat_phone
rx_number
drug_name
qty_disp
last_date
qty_left
price_code
last_price
last_contact
doc_name
ehf
userid
我要做的是为每个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;
它在到达我想去的地方方面做得很合理,但它比我想要的要多一些记录。我现在正在比较,看看它提取了哪些额外的记录以及原因。它也需要很长时间才能运行。