Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite合并查询_Sql_Sqlite - Fatal编程技术网

sqlite合并查询

sqlite合并查询,sql,sqlite,Sql,Sqlite,我有一个简单的android游戏数据表(昵称,分数)。 起初,我没有为每个昵称设置唯一的ID,现在我有多个来自同一昵称的条目 我现在想做的是,通过删除同一昵称中的“额外”条目来合并数据,并保持各自的高分 我试图提出一个查询,但没有成功 您建议如何实现我需要的结果?如何创建一个新表并使用此查询添加条目 INSERT INTO newscorestable(nickname, score) SELECT nickname, max(score) FROM oldscorestable GROUP

我有一个简单的android游戏数据表(昵称,分数)。 起初,我没有为每个昵称设置唯一的ID,现在我有多个来自同一昵称的条目

我现在想做的是,通过删除同一昵称中的“额外”条目来合并数据,并保持各自的高分

我试图提出一个查询,但没有成功


您建议如何实现我需要的结果?

如何创建一个新表并使用此查询添加条目

INSERT INTO newscorestable(nickname, score) 
SELECT nickname, max(score) 
FROM oldscorestable GROUP BY nickname
以及删除旧表

这个查询集应该可以做到这一点(假设原始表名是scores)

尝试以下操作(我目前没有安装SQLite来测试相关子查询的精确语法):

或者(这是正确的,多亏danishgoel在下面的评论中进行了测试)

对于超过几千个昵称的一次性使用,应该是完美的


如果给定昵称有两个相同的分数,这会给您留下重复的分数,这可能吗?

我想您应该这样做:

create table temptable (nickname varchar(50), score int);

insert into temptable (nickname, score)
select nickname, max(score)
from yourtable
group by nickname;

delete from yourtable;

insert into yourtable (nickname, score)
select nickname, max(score)
from temptable;
然而,如果我是你,我不会删除分数。您可以跟踪每个分数,然后查询您想要什么

想要前10名的高分吗?在这里:

select nickname, score
from yourtable
order by score desc
limit 10
select nickname, max(score)
from yourtable
group by nickname;
想要每个用户的高分吗?在这里:

select nickname, score
from yourtable
order by score desc
limit 10
select nickname, max(score)
from yourtable
group by nickname;

总体建议:跟踪所有内容,相应地查询

,这可能是一个选项,但我必须清除源表并从“结果”表复制数据,因为表名在游戏中是硬编码的。“这可能吗?”对于游戏?我猜:是的!!这不起作用,在sqlite.org的Delete语句中不支持表别名。此查询在
得分S1处出错,因为表别名S1是非法的。我在SQLite浏览器中尝试过,但在S1处出现错误。对不起,我目前使用的计算机上没有SQLite或任何工具。我正在编辑以提供一个没有别名的等效命令,根据规范,该命令应该是有效的,但是如果您愿意的话,我会要求您测试它。我已经测试过了,您的第二个查询,一个带有Scores.nickname的查询,运行得很好。第一个没有给出错误,但没有删除任何记录。感谢danishgoel对其进行测试,我现在正在做其他事情,因此无法测试它,但它看起来不错,关于删除别名的信息很好。
select nickname, max(score)
from yourtable
group by nickname;