ウェブサイトで数時間の検索を行った後、私は自分の問題に対する正解を見つけることができず、答えが複雑になりました。 私は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
フィールド、作成および破棄、アイテムID。私はあなたが私を助けることができることを願っています...
詳細が必要な場合は、ちょうどそう言う!
編集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のほうがはるかに限定された方法でのみ)では、SELECTリストにあり、集計ではないGROUP BY句からの列(式)を省略できます。アイテムID、破壊された最大回数、およびそれを行ったユーザーIDが必要な場合は、より複雑なクエリを作成する必要があります。 –
@JonathanLeffler:SQLiteはMySQLが "ランダムなものを選ぶ"のですが、PostgreSQLでは、PKでグループ化し、バージョン9.1+(両方でAFAIK)を使用している場合、それを取り除きましょう。 –