0

テーブル構造

id | term | result
==================
1  | t1   | 0
2  | t2   | 0
3  | t1   | 34
4  | t1   | 23
5  | t2   | 10
6  | t2   | 10
7  | t3   | 20

このテーブルは検索テーブル用であり、termは誰かが検索していたキーワードであり、resultはその時点で返された結果の数です。ここで、このテーブルから、1)用語が検索された回数、および2)最後に検索されたときに返された結果の数を取得する必要があります。

最初の1つは実行できcount(term) group by term、2つはおそらく実行できますORDER by id DESCが、1つのクエリで両方を実行する方法がわかりません。何か助けはありますか?

4

4 に答える 4

4

グループごとの最大値が必要です:

SELECT term, count, result
FROM   my_table NATURAL JOIN (
         SELECT term, COUNT(*) count, MAX(id) id FROM my_table GROUP BY term
       ) t

sqlfiddleでそれを参照してください。

于 2012-10-16T07:25:40.720 に答える
1
   select term, count(*), (select result from my_table where id = max(t.id)) 
   from my_table t 
   group by term

SQLフィドルを参照してください

于 2012-10-16T07:38:28.773 に答える
1

GROUP_CONCAT()関数を使用して結果フィールドを集計してから、SUBSTRING_INDEXを使用して目的のフィールドを取得できます。

SELECT COUNT(term), SUBSTRING_INDEX(GROUP_CONCAT(result ORDER BY id DESC), ',', 1) FROM table GROUP BY term

于 2012-10-16T07:37:02.233 に答える
-1

次のクエリを使用します

      select id,term,count(*) as 'count',result from (select * from table33 
 order by id desc) as abc group by term
于 2012-10-16T07:36:39.803 に答える