1

次のようなテーブルがあります。

key data created
1   a    14:15
2   b    14:16
2   c    14:17
1   a    14:18
3   b    14:19
3   c    14:20
3   a    14:21
1   b    14:22
2   c    14:23
2   c    14:24

最新のデータが挿入された最後の 2 つの一意のキーを取得したい。言い換えれば、私を取得するクエリが必要です: 1,2

しかし、私がこのようなことをすると:

SELECT distinct(key) FROM logs ORDER BY created DESC LIMIT 0,1

またはこれ:

SELECT key FROM logs GROUP BY key ORDER BY created DESC LIMIT 0,1

おそらく、これらがテーブルの最後のキーであるため、2,3 しか得られません。最新のデータで 2 つのキーを取得する方法がわかりませんでした

4

1 に答える 1

2

これを試して:

SELECT `key`, MAX( `created` ) AS `maxcreated`
FROM `logs`
GROUP BY `key`
ORDER BY `maxcreated` DESC 
LIMIT 0,2

キーごとの最大値 (つまり、最新の作成時刻) を選択していません。

したがって、 を使用GROUP BYして perを選択しkey、 a を追加しMAX( created )て、それぞれの最後の外観を選択しますkeyORDER BYそれぞれのandLIMIT句を適用すると、目的の結果が得られます。

フィドルの例

于 2013-01-31T13:35:45.360 に答える