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
,但我不知道如何在一个查询中执行这两个操作。有什么帮助吗?
答案 0 :(得分: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上查看。
答案 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