SQL查询:在一条语句中使用DISTINCT/UNIQUE和SUM()

SQL查询:在一条语句中使用DISTINCT/UNIQUE和SUM(),sql,sum,max,distinct,sql-like,Sql,Sum,Max,Distinct,Sql Like,问题 我有四台游戏服务器收集数据。将数据放入单个表中。不幸的是,这会导致一个玩家的每个属性有四个条目 我想要什么 我希望在某些列上有一条记录和一个SUM()。 我将发表一篇我写的声明,虽然它不起作用,但你会明白我想要完成的事情。 SELECT DISTINCT( Name ), Max(Level), Class, Sum(Kills), Sum(Deaths),

问题
我有四台游戏服务器收集数据。将数据放入单个表中。不幸的是,这会导致一个玩家的每个属性有四个条目

我想要什么
我希望在某些列上有一条记录和一个SUM()。

我将发表一篇我写的声明,虽然它不起作用,但你会明白我想要完成的事情。

SELECT DISTINCT( Name ), 
               Max(Level), 
               Class, 
               Sum(Kills), 
               Sum(Deaths), 
               Sum(Points), 
               Sum(TotalTime), 
               Sum(TotalVisits), 
               CharacterID 
FROM   Characters 
WHERE  Name LIKE '$value%' 
        OR CharacterID LIKE '$value' 
ORDER  BY Name ASC; 

您可以按非聚合字段(即名称、类、字符)分组,而不是使用distinct。通过这种方式,您可以使用聚合:max、sum,您仍然可以使用不同的字符

首先让我说,数据库中的重复行确实不太理想。数据库使数据更易于操作,而不会弹出随机异常

然而,为了回答您的问题,这只是dweiss在代码中所说的(使用):


我假设每个玩家的名字、类、角色都是一样的,因为这是唯一能得到这些值的方法。否则,您还必须在它们上使用聚合函数。

重复的行通常表明您的系统架构存在问题。您可能需要重新思考如何处理并行服务器。谢谢,我承认我在StackedOverflow上的风格很愚蠢。OP-Tim在这里明确指出,规范化的db将使事情变得更加简单,并且几乎总是更加优化。就目前而言,Tim编写的查询应该可以正常工作,但您可能需要阅读更多关于SQL的内容,并且可能需要花一些时间来绘制一个模式——这肯定是非常有用的。非常感谢大家的宝贵经验。我现在面临的问题是,查询在phpmyadmin上工作,但在网页上。。。我第一次遇到这种情况,任何经验都将不胜感激。@Andrew我不确定。如果您打开一个新的StackOverflow问题并完整地解释您的问题,这可能是最好的。谢谢!使用Tim在上面写的查询,但要考虑他和我的评论。@user1366982另外,如果您认为dweiss的答案最有帮助,您可以单击绿色复选标记给他接受的答案。抱歉,查找绿色复选标记时,看不到。我一定是瞎了。啊,白色的对勾哈哈。
SELECT
  name,
  MAX(Level),
  Class,
  SUM(Kills),
  SUM(Deaths),
  SUM(Points),
  SUM(TotalTime),
  SUM(TotalVisits),
  CharacterID
FROM
  Characters
WHERE
  Name LIKE '$value%' OR CharacterID LIKE '$value'
GROUP BY
  name,
  class,
  characterid
ORDER BY
  Name ASC
;