我加入了 3 个表以显示用户得分最高的表
我的表格
游戏日志:
---ID---user_ID---score---time---
| 1 52 567 10 |
| 2 53 641 13 |
| 3 52 465 8 |
| 4 53 451 14 |
---------------------------------
用户:
---ID---name---countyid---
| 52 Dave 1 |
| 53 John 2 |
------------------------
县:
---countyid---countyname---
| 1 Orange wichit |
| 2 Orange clemts |
--------------------------
SQL:
SELECT * FROM game_log
INNER JOIN users ON game_log.user_ID=users.ID
INNER JOIN county ON users.countyid=county.countyid
ORDER BY game_log.score DESC , game_log.time LIMIT 20";
上面的代码给了我这个结果:
Rank---Name--------County------Score---Time
1 John Orange clemts 641 13
2 Dave Orange wichit 567 10
3 John Orange clemts 465 8
4 Dave Orange wichit 451 14
我的问题是我希望高分表显示得分最高的前 20 个用户,而不是 20 个最高分。
像这样:
Rank---Name--------County------Score---Time
1 John Orange clemts 641 13
2 Dave Orange wichit 567 10
需要一些帮助,不熟悉连接表;-)
最佳答案
此方法将显示前 20 位用户和每个用户的最高分数,如果他们有多个相同分数的实例,它将显示最早的信息(该用户和分数的最低时间值)。
SELECT *
FROM game_log gl
INNER JOIN users u
ON gl.user_ID = u.ID
INNER JOIN county c
ON u.countyid = c.countyid
WHERE not exists (select 1
from game_log gl2
where gl2.user_id = gl.user_id
and gl2.score > gl.score)
and not exists (select 1
from game_log gl2
where gl2.user_id = gl.user_id
and gl2.time < gl.time
and gl2.score = gl.score)
ORDER BY gl.score DESC, gl.time LIMIT 20;
如果不这样做,如果前 20 名中的同一用户有 2 次以上相同的分数,他们将被列出 2 次以上,并且您不会通过使用 LIMIT 20 找回 20 人,因为同一个人会从那 20 行中向上 N 行。
SQL Fiddle 此处显示的数据有领带:http://sqlfiddle.com/#!2/0ac931/5/0
关于PHP MySQL 高分表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976665/
我正在寻找一些关于从哪里开始的建议:我目前在开发环境中启动并运行“vanilla”MarkerClusterer(大约3000个标记)。每个标记都有一个与之关联的分数,我想更改它,以便聚类标记代表它们包含的标记的最高分数(而不是仅代表标记的数量)。我应该去哪里,我将如何实现这一改变?谢谢! 最佳答案 使用setCalculator()方法定义您希望如何完成计算。这是使用originalfunction的代码.调整它以按照您想要的方式进行计算。每个簇调用一次计算器函数,因此结果是簇中您想要的文本及其应具有的样式的索引。your_clu
我正在用Javascript实现一个简单的游戏,并且有兴趣为其创建一个在线高分表,以便玩家可以相互竞争。我对此有两个担忧:为此我需要的最简单的服务器端程序是什么?我不需要一个成熟的“网络应用程序”,只需要一些简单的东西来获取带有高分的POST请求、更新数据库并发回分数列表。我熟悉Django。你有什么建议?如何使高分表合理安全?我知道要让它对有能力和敬业的黑客无懈可击是很困难的,但我不希望任何有权访问Javascript源代码的人都能够过于简单地提交虚构的分数。是否有用于此目的的工具? 最佳答案 获得高分将非常困难。我的意思是,仅仅
我一直在尝试将iron-form与post方法一起使用,但我对它的工作原理有一些疑问,甚至在某些情况下我是否应该使用它。所以我试图找到以下问题的答案:据我了解,iron-form仅用于Ajax请求,因此要定期发布(刷新页面),我不应该使用它,对吧?(对/错)如果我不使用is='iron-form',是否有任何其他方法可以验证纸质输入字段?(现在这是让我最困惑的地方。)使用带有post方法的铁形式,我只得到表单数据作为"formData:[objectObject]",这使得后端完全没有用,因为后端永远得不到表单元素值。可以在iron-form演示页面上看到这种行为https://ele
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭11年前。给定一个客户端游戏(我们称之为游戏X)和一个存储高分的服务器端数据库如何在游戏结束后安全地将高分提交给服务器一种只有在实际玩游戏时才能完成的方法(从而防止后期劫持)。鉴于这里设置的这个问题是我一直在思考的一些想法**在游戏开始时发送一个在给定时间后过期的sessionID发送到服务器进行验证问题是这可以很容易地通过请求开始ID然后伪造分数来利用**游戏中发布到服务器以验证用户是否确实在玩游戏的检
如何用最高点对数组进行排序?例子:$sale=array();Array([UserA]=>Array([unsuccessful]=>0[Points]=>31[procesing]=>4)[UserB]=>Array([unsuccessful]=>4[Points]=>200[procesing]=>1)[UserC]=>Array([unsuccessful]=>3[Points]=>150[procesing]=>55))按积分排序,应该是依次为:UserB、UserC、UserA 最佳答案 uasort($array,f
我正在尝试调整我的应用程序,主要是为了减少响应时间的“扩展”。平均值很好,但范围太宽。Dynatrace显示响应时间越长,暂停时间越长。这指向GC。我尝试根据在线阅读更改一些JVMGC值,但收效甚微。根据GC日志,我计算出分配速率约为324MB/s,而提升速率仅为0.85MB/s。在我看来,这似乎具有很高的分配率,所以我尝试增加年轻一代的大小。第一个屏幕截图使用默认的Java8设置,1024MBXmx。第二张截图是设置NewRatio=1。任何有关下一步尝试的建议都将不胜感激。我已经尝试过的事情:更改为G1GC,设置NewRatio=1,设置NewRatio=1并将Xmx增加到2048
假设我有一个高分表结构如下namescorenamescore....我需要做一些文件操作和操作文件的某些区域,我认为最好的方法是将它存储在一个保留文件顺序的容器中,用容器进行数据操作,然后输出回文件。我考虑过使用map,但map不会保留文件的顺序。会vector>会更好,还是有某种我可以使用的有序map?如有必要,我还需要容器重复一个名字。我认为multimap保留一个键,但允许该键有多个值,这不是我想要的,因为它不会保持顺序。 最佳答案 使用std::vector>解决方案。或者甚至更好,做一个HighScoreEntry类,并
我的应用程序中有基本的Facebook集成,用于发布屏幕截图。我想知道如何实现以下目标。如何保存我的iOS应用用户的高分以供Facebook识别(或推送到)?如何检索玩我的iOS应用的Facebook好友的这些高分? 最佳答案 您可以创建自己的高分系统,也可以使用ScoresAPI:https://developers.facebook.com/docs/games/scores查看“为玩家和friend阅读分数”:Youcanreadthesetofscoresforaplayerandtheirfriendsbyissuinga
嗨我想知道是否有任何使用共享首选项实现高分列表的简单示例?即在开始时预先确定高分,然后根据用户获得的分数更新列表? 最佳答案 如果您想使用共享首选项,问题是您无法真正存储列表或类似的东西。共享首选项仅支持boolean、float、int、String、long和Set。所以最好的选择是套装。您可以在那里将高分的每个值转换为一个字符串,将其添加到一个集合中,然后将该集合存储在共享首选项中。在您的应用程序启动期间,您可以检索该集合,将字符串转换回整数或您用来表示高分的任何内容。例如看这个方法:http://developer.andr
该死,我正试图为我的项目取得高分,但我的代码只保存最后一个值而不是最高值我怎样才能只存储最高值(value)?这是我的代码。这是保存过程->SharedPreferencesprefs=getSharedPreferences(MY_PREFERENCES,Context.MODE_PRIVATE);SharedPreferences.Editoreditor=prefs.edit();TextViewoutputView=(TextView)findViewById(R.id.textscore);CharSequencetextData=outputView.getText();i