可能重复:
Select TOP X (or bottom) percent for numeric values in MySQL转换SQL Server查询到MySQL
我怎么会写在MySQL这个查询?
SELECT TOP 50 PERCENT * FROM Persons
条目表中的数量将不断变化,所以我需要按百分比而不是一个固定的数字来选择。
可能重复:
Select TOP X (or bottom) percent for numeric values in MySQL转换SQL Server查询到MySQL
我怎么会写在MySQL这个查询?
SELECT TOP 50 PERCENT * FROM Persons
条目表中的数量将不断变化,所以我需要按百分比而不是一个固定的数字来选择。
这实际上是一个duplicate question,但是我现在有一个更好的,单通,快,回答:
Select *
from
(
SELECT tbl.*, @counter := @counter +1 counter
FROM (select @counter:=0) initvar, tbl
ORDER BY ordcolumn
) X
where counter <= (50/100 * @counter);
ORDER BY ordcolumn
实际上它是两次传递(一个来自表,一个来自派生),但仍然是O(N)而不是O(N^3),链接中接受的答案题。 OTOH,我在复制中的原始答案略快,虽然它需要批量而不是单个查询。 – RichardTheKiwi 2011-04-02 10:01:29
@Sandro /看我为真正的重复的答案。你链接到的是一个直线TOP,而不是TOP X PERCENT – RichardTheKiwi 2011-04-02 09:53:40