将SQL Server查询转换为MySQL

Tom*_*Tom 2 mysql sql sql-server

可能重复:
为MySQL中的数值选择TOP X(或bottom)百分比

我如何在MySQL中编写此查询?

SELECT TOP 50 PERCENT * FROM Persons

表格中的条目数量将不断变化,因此我需要按百分比而不是固定数字进行选择.

Ric*_*iwi 8

这实际上是一个重复的问题,但我现在有一个更好的,单通,快速的答案:

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
Run Code Online (Sandbox Code Playgroud)

  • 实际上它是两个通道(一个来自表,一个来自派生),但仍然是O(N)而不是O(N ^ 3),是链接问题中接受的答案.OTOH,我在副本中的原始答案工作稍快,虽然它需要批处理而不是单个查询. (2认同)