可能重複:
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