Mysql SQL查询以查找更大的重复行
我在数据库中有一个如下所示的表:Mysql SQL查询以查找更大的重复行,mysql,sql,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
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;
以及一个如下所示的查询:
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语句,查询似乎可以工作,可以吗?谢谢。您可以尝试运行以下查询,并使用
max(id)
查找重复项
如果score2可以为空,请尝试以下操作:
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
使用我更新的答案。我在第一个回答中有一个拼写错误否,因为我不知道表格重复行的总分越高,ID是否也越高。