我在数据库中的表格看起来像这样:
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语句,查询似乎有效,可以吗?感谢。
答案 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