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) 最后一次搜索时返回的结果数。

对于第一个我可以做count(term) group by term,对于 2 可能ORDER by id DESC,但我不知道如何在一个查询中做这两个。有什么帮助吗?

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 回答