당 하나 개의 레코드를 가져 나는 열이있는 MySQL의 테이블 targeted_refills
이 userid
MySQL은 그룹
내가하려는 것은 각 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;
와 내가 가고 싶은 곳지고 합리적인 일을하지만, 그것은을 당기는 내가 원하는 것보다 더 적은 기록. 지금 당장 추려낸 추가 기록과 이유를 비교하려고합니다. 그것은 또한 실행하는 데 오랜 시간이 걸립니다.
하위 쿼리를 사용해야합니다. 시작점으로 'SELECT'문이 있습니까? –
[SQL] 열에 최대 값이있는 행만 선택하십시오 (http://stackoverflow.com/q/7745609/1037210). – Lion
[열에 대한 최대 값을 가진 행 가져 오기] 가능한 중복 (http://stackoverflow.com/questions/121387/fetch-the-row-which-has-the-max-value-for-a- 열) –