如何编写这个mysql查询

时间:2012-10-16 07:20:30

标签: mysql

表结构

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是某人搜索的关键字,结果是当时返回的结果数。现在从这个表我需要检索 1)搜索一个术语的次数和 2)上次搜索时返回的结果数。

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

4 个答案:

答案 0 :(得分:4)

你想要groupwise maximum

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

sqlfiddle上查看。

答案 1 :(得分:1)

您可以使用GROUP_CONCAT()函数聚合结果字段,然后使用SUBSTRING_INDEX获取所需的字段。

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

答案 2 :(得分:1)

   select term, count(*), (select result from my_table where id = max(t.id)) 
   from my_table t 
   group by term

请参阅SQL Fiddle

答案 3 :(得分:-1)

使用以下查询

      select id,term,count(*) as 'count',result from (select * from table33 
 order by id desc) as abc group by term