SQL查询以查找更大的重复行

时间:2016-08-09 18:40:13

标签: mysql sql

我在数据库中的表格看起来像这样:

TABLE `partecipanti` (
  `ID` int(11) NOT NULL,
  `Name` varchar(30) DEFAULT NULL,
  `Surname` varchar(30) DEFAULT NULL,
  `Score2` int(11) DEFAULT NULL,
  `Zero1` int(11) DEFAULT '0',
  `Zero2` int(11) DEFAULT '0',
  `Score1` int(10) NOT NULL DEFAULT '0'
)

一个看起来像这样的查询:

SELECT *,Score1 + Score2 as Total FROM partecipanti
ORDER BY Total DESC,Score2 DESC,Zero2 DESC,Score1 DESC, Zero1 DESC; 

现在我想做的事情是:当我有重复记录(同名和同姓,而其他数据包括ID是不同的)时,选择得分较高的行,即存储在字段Total

我正在考虑嵌套查询,在第一个查询中我对数据进行排序,然后使用GROUP BY对它们进行分组,然后选择更高的元素。有人可以帮帮我吗?感谢。

编辑:

如果我添加DISTINCT语句,查询似乎有效,可以吗?感谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试运行以下查询,并使用max(id)找到重复项。

SELECT Score1, Score2, COUNT(*), Max(ID) AS dupes 
FROM participanti 
GROUP BY Total 
HAVING (COUNT(*) > 1)

答案 1 :(得分:0)

鉴于score2可以为null,请尝试:

select 
    p1.* 
from 
    partecipanti p1
    join ( select name, surname, max(score1 + coalesce(score2, 0) ) totalScore from partecipanti group by name, surname) p2 on
      p1.Name = p2.Name and
      p1.Surname = p2.Surname and
      p1.score1 + coalesce(p1.score2, 0) = p2.totalScore