让我们假设我们有一个表格,其中包含以此特定顺序引入的退休值:10,11,7,5,17,147,555。
如果我试图找出例如11位于哪里,如果我将命令表升序,我会看到该指数是4.
然而,对于大量数据,我不想得到整个表格并将其排序在php中,因为这是愚蠢的。
我想知道的是mysql是否可以在不查询所有值的情况下返回有序查询中的值的索引。
谢谢!
更新#1
我想要的查询看起来像这样(感谢bluefeet):
SELECT rownum FROM (
SELECT col1, @rownum:=@rownum+1 AS rownum
FROM yourtable,
(SELECT @rownum:=0) table1
ORDER BY col1) table2
WHERE col1=11
进行测试
答案 0 :(得分:3)
MySQL本身没有rownum
,但您可以通过以下方式进行模拟:
SELECT col1, @rownum:=@rownum+1 AS rownum
FROM yourtable,
(SELECT @rownum:=0) r
ORDER BY col1
使用此功能,您可以确定可能为您提供所需的rownumber
。
如果您想要特定的rownumber
,可以将其包装在子查询中:
select *
from
(
SELECT col1, @rownum:=@rownum+1 AS rownum
FROM yourtable,
(SELECT @rownum:=0) r
ORDER BY col1
) x
where rownum = 6
答案 1 :(得分:2)
MySql没有这方面的特殊功能(我知道),但您可以使用stored procedure来计算结果。你仍然需要经过大量的数据来计算索引,所以在大型数据集上,这将是昂贵的。