我有一张拥有近1000万次观看次数的表格,并会在最近的百万或十万左右的时间内运行此查询。
这是一个带有示例数据和输入/输出的SQL小提琴:http://sqlfiddle.com/#!9/340a41
这甚至可能吗?
CREATE TABLE object (`id` int, `name` varchar(7), `value` int);
INSERT INTO object (`id`, `name`, `value`)
VALUES
(1, 'a', 1),
(2, 'b', 2),
(3, 'c', 100),
(4, 'a', 1),
(5, 'b', 2),
(6, 'c', 200),
(7, 'a', 2),
(8, 'b', 2),
(9, 'c', 300),
(10, 'a', 2),
(11, 'b', 2),
(12, 'a', 2),
(13, 'b', 2),
(14, 'c', 400)
;
-- Want:
-- name, max(id), count(id)
-- 'a', 4, 2
-- 'b', 14, 5
-- 'a', 12, 3
答案 0 :(得分:1)
如果您想要最新版本并且ID是按顺序实现的,那么您可以使用limit
或top
执行此操作。在SQL Server中:
select top 100000 o.*
from object o
order by id desc;
在MySQL中,您将使用limit
:
select o.*
from object o
order by id desc
limit 100000
答案 1 :(得分:1)
select name, count(id) cnt, max(id) max_id, max(value) max_v
from
(select
top 1000000 -- MS SQL Server
id,name,value
from myTable
limit 1000000 --mySQL
order by id desc)
group by name
删除与您的服务器不匹配的行。