0

假设我们有一个表格,其中包含按此特定顺序引入的闲置值: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

你可以在这里测试它http://sqlfiddle.com/#!2/a21c8/12

4

2 回答 2

3

MySQL 本身没有rownum,但您可以通过以下方式模拟它:

SELECT col1, @rownum:=@rownum+1 AS rownum
FROM yourtable,
(SELECT @rownum:=0) r
ORDER BY col1

SQL Fiddle with Demo

使用它,您可以确定rownumber哪些可能会满足您的需求。

如果你想要一个特定的rownumber,你可以将它包装在一个子查询中:

select *
from 
(
  SELECT col1, @rownum:=@rownum+1 AS rownum
  FROM yourtable,
  (SELECT @rownum:=0) r
  ORDER BY col1
) x
where rownum = 6

请参阅带有演示的 SQL Fiddle

于 2012-09-16T19:55:10.050 回答
2

MySql 对此没有特殊功能(据我所知),但您可以使用存储过程来计算结果。您仍然必须通过大量数据来计算索引,因此在大型数据集上这将是昂贵的。

于 2012-09-16T19:54:23.300 回答