查询结构 - 忽略来自多个用户的同一事件的条目?

时间:2010-06-01 06:05:17

标签: mysql filter duplicates

我的MySQL数据库中的一个表跟踪游戏。它具有以下结构:

SCENARIO_VICTORIES
[ID]  [scenario_id]  [game]  [timestamp]  [user_id]  [winning_side]  [play_date]

ID是自动增量主键。 timestamp记录提交记录的时刻。 winning_side具有三个可能值之一:1,2或0(表示平局)

此表上执行的一个查询计算每个方案的胜利百分比,查看该方案的页面时。输出表示为:

  • Side 1 win%
  • Side 2 win%
  • 画%{/ li>

并询问:

SELECT winning_side, COUNT(scenario_id)
FROM scenario_victories WHERE scenario_id='$scenID'
GROUP BY winning_side ORDER BY winning_side ASC

然后处理成百分比等。

很抱歉,设置时间过长。 我的问题是:我的几个用户互相玩耍,并记录他们的相互结果。所以这些战斗在胜利百分比和结果数量上都有双重代表。虽然这种情况很少发生,但用户群并不大,而且双重条目对数据有明显的影响。

鉴于上面的表格和查询 - 是否有人对我如何“折叠”具有相同play_date & game & scenario_id & winning_side的记录有任何建议,以便它们只被计算一次?

1 个答案:

答案 0 :(得分:1)

这有点晚了,但理想情况下,当你插入这些副本时你会过滤掉它们。

那就是说,你应该能够像DISTINCT一样进行SELECT winning_side, COUNT(scenario_id) FROM ( SELECT DISTINCT play_date, game, scenario_id, winning_side FROM scenario_victories WHERE scenario_id = '$scenID' ) GROUP BY winning_side ORDER BY winning_side ASC 内部查询:

{{1}}