假设我有一个值列表,像这样:
id value ---------- A 53 B 23 C 12 D 72 E 21 F 16 ..
我需要此列表中前10 % 的内容-我尝试过:
SELECT id, value FROM list ORDER BY value DESC LIMIT COUNT(*) / 10
但这是行不通的。问题是在执行查询之前,我不知道记录的数量。有任何想法吗?
我发现的最佳答案:
SELECT* FROM ( SELECT list.*, @counter := @counter +1 AS counter FROM (select @counter:=0) AS initvar, list ORDER BY value DESC ) AS X where counter <= (10/100 * @counter); ORDER BY value DESC
将10更改为其他百分比。