2
MySQL 쿼리를 거의 완료했다고 가정 해 봅시다. 그러나 답변을 찾기위한 마지막 힌트가 필요합니다. 그룹 뒤에 가장 작은 날짜를 선택하십시오.
나는 (참조) 다음 MySQL의 쿼리 사용 :SELECT * FROM
(
SELECT ll.id AS id, ll.globalId AS globalId, ll.date AS date, ll.serverId AS serverId, ll.gamemodeId AS gamemodeId, ll.mapId AS mapId, origin,
pjl.id AS pjlid, pjl.globalid AS pjlglobalId, pjl.date AS pjldate, MIN(pjl.date) AS mindate, pjl.serverId AS pjlserverId, pjl.playerId AS pjlplayerId
FROM (
(
SELECT id, globalId, date, serverId, playerId, 'playerjoins' AS origin
FROM playerjoins pj
WHERE playerId =976
)
UNION ALL
(
SELECT id, globalId, date, serverId, playerId, 'playerleaves' AS origin
FROM playerleaves pl
WHERE playerId =976
)
ORDER BY date DESC
)pjl
JOIN levelsloaded ll ON pjl.date >= ll.date
GROUP BY ll.id, origin
ORDER BY date DESC) above
를이 나에게 결과 집합 (의 일부), 그는 다음 SQL 바이올린에서 찾을 수 있습니다 제공 : http://sqlfiddle.com/#!2/514b6/1/0
를 내가 원하는는 다음
이제 중복id
년대는 결과 집합에 있다는 것을 볼
- ,
id = 133
과 결과의 예 걸릴. - 해당 기록 (
id = 113
)의 날짜 이후에 발생한 첫 번째 작업을보고 싶습니다. - 해당 레코드의 날짜는
November, 27 2013 00:00:17+0000
입니다. - 이제 해당 날짜 이후에 직접 발생한 문제는 두 가지가 있습니다.
origin = 'playerjoins'
mindate = November, 28 2013 00:00:18+0000
입니다.- 2)
origin = 'playerleaves'
onmindate = November, 28 2013 00:00:19+0000
. playerjoins
이 처음 발생 했으므로 최종 결과 세트에서 그 값을 원합니다.
그래서 예를 들어 분명히하기를 바란다 : 동일한 ID를 가진 두 행마다 최소 mindate
행을 갖고 싶습니다. 전체 행을 볼 수 있어야하므로 2 행당 최저 mindate
만을 알면 이 아니라이면 충분합니다. 나는 origin
을 알고 싶다.
편집 : 대답은 여기에서 찾을 수 있습니다. https://stackoverflow.com/a/7745635/2057294, 아직 조사 중입니다.