在網站上搜索了幾個小時後,我無法找到正確的答案來解決問題,或者答案很複雜。 我有一些統計數據,來自minecraftserver,我想知道哪些塊是由誰創建的。所以我開始使用GROUP BY和MAX,但它沒有返回正確的值。 MAX值是好的,但它與itemid和playerid衝突。它只是選擇第一個id和玩家名稱。 (注:每個playerid有一個單獨的一行爲每個項目!!!)查詢是如下:MAX和GROUP BY不會返回好值
SELECT `playername` , `itemid` , MAX(destroyed)
FROM `blockstats_typed`
GROUP BY `itemid`
LIMIT 0 , 30
是有playername字段,ITEMID,創建和銷燬。我希望你們能幫助我...
如果你需要更多信息,就這麼說!
編輯1(表模式):
id int(10) id of the row (AI)
playername varchar(50) playername
itemid smallint(5) id of the item
created int(10) times created
destroyed int(10) times destroyed
您還需要通過'playername'進行分組。我很驚訝,沒有錯誤。 –
只有MySQL(和PostgreSQL,但以更有限的方式)允許您省略選擇列表中但不包含聚合的GROUP BY子句中的列(表達式)。如果你想要項目ID,它被銷燬的最大次數,以及這樣做的用戶ID(或ID),你必須編寫一個更復雜的查詢。 –
@JonathanLeffler:SQLite會讓MySQL「挑一個隨機的」東西,PostgreSQL讓你逃脫它,如果你是由PK分組和使用版本9.1+(AFAIK都)。 –