1

こんにちは、これは非常に基本的なことだと認識していますが、今はとても混乱しuser_ididいます。

私のテーブルは、id が自動インクリメントのように見えます。user_id のみを保存します。データベースの最新のエントリである user_id を 1 回だけ取得したいのですが、他は無視します。

Table
---------------------
id     |   user_id  |
---------------------
13     |    25      |
12     |    36      |
11     |    25      |
10     |    42      |
9      |    95      |
8      |    25      |
7      |    95      |
---------------------
so on

私はこれを試しました

SELECT * FROM  `table` GROUP BY user_id ORDER BY `id` DESC LIMIT 4

出力したいのです25,36,42,95が、多くの実験も試しましたが、何も機能していないようです。グループ化するにはタイムスタンプなどが必要ですか?またはどのクエリが機能しますか?

4

5 に答える 5

6

GROUP BY期待どおりに動作しないパーシャルを実行しています。目的の結果を生成するクエリを次に示します。

SELECT MAX(id) AS MAXID, user_id
FROM `table`
GROUP BY user_id
ORDER BY MAXID DESC
LIMIT 4

動作はここで説明されています

MySQL は GROUP BY の使用を拡張して、選択リストが GROUP BY 句で指定されていない非集計列を参照できるようにします。[...] この機能を使用すると、不要な列の並べ替えやグループ化を回避してパフォーマンスを向上させることができます。ただし、これは主に、GROUP BY で指定されていない各非集計列のすべての値が各グループで同じ場合に役立ちます。サーバーは各グループから任意の値を自由に選択できるため、それらが同じでない限り、選択された値は不確定です。さらに、各グループからの値の選択は、ORDER BY 句を追加しても影響を受けません。結果セットのソートは値が選択された後に行われ、ORDER BY はサーバーが選択する各グループ内の値には影響しません。

于 2013-10-10T13:06:42.410 に答える
0

これを試して

SELECT MAX(id) as countid , `user_id` from `table`
GROUP BY `user_id`
ORDER BY countid  DESC
LIMIT 20
于 2013-10-10T13:12:21.793 に答える
0
  1. あなたの例では25,36,42,95、のような結果を得る必要がありますが、ID フィールドで並べ替えます。それを並べ替えると、異なる結果が得られます。

  2. クエリでグループ化されるため、クエリで選択されていない列は使用できません (id は省略されています)。

  3. それでもIDで注文する必要がある場合は、MAX('id')またはMIN('id')で注文を追加する必要があると思います


あなたの場合、次のクエリを作成します。

SELECT user_id FROM  `table` GROUP BY user_id ORDER BY MAX(`id`) DESC LIMIT 4
于 2013-10-10T13:18:39.413 に答える
-1

distinctグループ化の代わりに、以下の SQL クエリのようにを使用できます。

SELECT distinct(user_id) FROM  `table` ORDER BY `id` DESC LIMIT 4
于 2013-10-10T13:05:42.107 に答える
-2

SELECT * FROM ( SELECT 13 id, 25 UserID UNION ALL SELECT 12 id, 36 UserID UNION ALL SELECT 11 id, 25 UserID UNION ALL SELECT 10 id, 42 UserID UNION ALL SELECT 09 id, 95 UserID UNION ALL SELECT 08 id, 25 UserID UNION ALL SELECT 07 id, 95 UserID ) a GROUP BY userid ORDER BY idDESC LIMIT 4

于 2013-10-10T13:08:17.257 に答える