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
的ResultSet中,采取了例如与id = 133
导致。 - 我想查看该记录中日期之后发生的第一个操作(
id = 113
)。 - 该记录的日期是
November, 27 2013 00:00:17+0000
。 - 现在有两种可能的行动发生在该日期之后:
- 1)
origin = 'playerjoins'
在mindate = November, 28 2013 00:00:18+0000
。 - 2)
origin = 'playerleaves'
onmindate = November, 28 2013 00:00:19+0000
。 - 由于
playerjoins
是第一次发生的事情,我希望在我的最终结果集中。
所以,我希望我的例子很清楚:我希望对于具有相同ID的每2行,具有最低的mindate
的行。我需要能够看到整个行,所以只知道最低mindate
每2行不是就足够了。我也需要知道origin
。
编辑:答案可能在这里找到,https://stackoverflow.com/a/7745635/2057294,仍在调查它。