私のテーブルは次のとおりです。
ID | 家 | 日付時刻 | プレーヤー | 資源 |
---|---|---|---|---|
1 | 10 | 2009/04/03 | ジョン | 399 |
2 | 11 | 2009/04/03 | ジュリエット | 244 |
5 | 12 | 2009/04/03 | ボラット | 555 |
3 | 10 | 2009/03/03 | ジョン | 300 |
4 | 11 | 2009/03/03 | ジュリエット | 200 |
6 | 12 | 2009/03/03 | ボラット | 500 |
7 | 13 | 2008/12/24 | ボラット | 600 |
8 | 13 | 2009/01/01 | ボラット | 700 |
home
の最大値を保持するそれぞれの個別を選択する必要がありますdatetime
。
結果は次のようになります。
ID | 家 | 日付時刻 | プレーヤー | 資源 |
---|---|---|---|---|
1 | 10 | 2009/04/03 | ジョン | 399 |
2 | 11 | 2009/04/03 | ジュリエット | 244 |
5 | 12 | 2009/04/03 | ボラット | 555 |
8 | 13 | 2009/01/01 | ボラット | 700 |
私が試してみました:
-- 1 ..by the MySQL manual:
SELECT DISTINCT
home,
id,
datetime AS dt,
player,
resource
FROM topten t1
WHERE datetime = (SELECT
MAX(t2.datetime)
FROM topten t2
GROUP BY home)
GROUP BY datetime
ORDER BY datetime DESC
うまくいきません。データベースは 187 行を保持していますが、結果セットには 130 行あります。結果には の重複がいくつか含まれていますhome
。
-- 2 ..join
SELECT
s1.id,
s1.home,
s1.datetime,
s1.player,
s1.resource
FROM topten s1
JOIN (SELECT
id,
MAX(datetime) AS dt
FROM topten
GROUP BY id) AS s2
ON s1.id = s2.id
ORDER BY datetime
いいえ。すべてのレコードを提供します。
-- 3 ..something exotic:
色々な結果で。