获取排序中特定项目的订单ID

时间:2012-09-16 19:50:10

标签: mysql

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

进行测试

2 个答案:

答案 0 :(得分: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 with demo

答案 1 :(得分:2)

MySql没有这方面的特殊功能(我知道),但您可以使用stored procedure来计算结果。你仍然需要经过大量的数据来计算索引,所以在大型数据集上,这将是昂贵的。