我希望它不會被標記爲脫離主題,因爲,是的 - 我要求對所述問題採用「最佳」方法。MySQLi,多列高分,高效查詢,正確的方法
比方說,我們已經得到了高分表列app_id
,best_score
,best_time
,most_drops
,longest_something
和夫婦更多。 我想收集app_id分組的前三個結果ON EACH CATEGORY?
現在我在循環中使用的每個類別分別排名查詢:
SELECT app_id, best_something1,
FIND_IN_SET(best_something1,
(SELECT GROUP_CONCAT(best_something1
ORDER BY best_something1 DESC)
FROM highscores)) AS rank
FROM highscores
ORDER BY best_something1 DESC LIMIT 3;
有兩件事情值得補充:
- 特定應用中的所有列正在以相同的更新時間(可以考慮創建一個幫助表)。
- 預期的「turbo查詢」的結果可能會經常被要求 - 就像更新值一樣。
我對SQL很基本,懷疑它有更多的命令組合在一起可以做到這一點?
我期望從這篇文章中得知,一些聰明的貓頭鷹至少會指出去哪裏或如何去的方向。
編輯---確定,提供樣品表: http://sqlfiddle.com/#!2/eef053/1
編輯---好吧,這裏是樣品的結果太(已JSON格式,SRY):
{「total_blocks 「:[[」 13" , 「174」, 「1」],[ 「9」, 「153」, 「2」],[ 「10」, 「26」, 「3」]], 「total_games」: [[ 「13」, 「15」, 「1」],[ 「9」, 「12」, 「2」],[ 「10」, 「2」, 「3」]], 「total_score」:[[ 「13」, 「410」, 「1」],[ 「9」, 「332」, 「2」],[ 「11」, 「88」, 「3」]], 「aver_pps」:[[「11 」, 「4.34011」, 「1」],[ 「13」, 「2.64521」, 「2」],[ 「12」, 「2.60623」, 「3」]], 「aver_drop_per_game」:[[ 「11」, 「20」, 「1」],[ 「10」, 「13」, 「2」],[ 「9」, 「12.75」, 「3」]], 「aver_drop_val」:[[ 「11」,「4.4 」, 「1」],[ 「13」, 「2.35632」, 「2」],[ 「9」, 「2.16993」, 「3」]] 「aver_score」:[[ 「11」, 「88」, 「1」],[ 「9」, 「27.6667」, 「2」],[ 「13」,「27.3333 」, 「3」]] 「best_pps」:[[ 「13」, 「4.9527」, 「1」],[ 「11」, 「4.34011」, 「2」],[ 「9」, 「4.13076」, 「3」]], 「most_drops」:[[ 「11」, 「20」, 「1」],[ 「9」, 「16」, 「2」],[ 「13」, 「16」,「2 「]]」 longest_drop 「:[[」 9" , 「3」, 「1」],[ 「13」, 「2」, 「2」],[ 「11」, 「2」, 「2」] ], 「best_drop」:[[ 「11」, 「42」, 「1」],[ 「13」, 「36」, 「2」],[ 「9」, 「30」, 「3」]], 「best_score」:[[「11」,「88」,「1」],[「13」,「78」,「2」],[「9」,「58」,「3」]]}
如果您提供了示例表格(當然是表格格式)和您想要的輸出示例,那麼您的問題就會更加「清晰」。 – belwood 2015-02-07 03:25:39
什麼是'app'?這是另一張桌子嗎? – 2015-02-07 03:27:44
http://sqlfiddle.com/ – EL3PHANTEN 2015-02-07 03:31:04