2012-09-16 67 views
0

讓我們假設我們有一個在這個特定的順序介紹休耕值的表:11 17 147 10,,7,5,,,555獲取特定項目的訂單ID的排序

如果我試着找出哪裏11例如位於,如果我會訂購表升序我會看到索引是4.

但是,對於大量的數據,我不希望得到整個表,並將其整理PHP會因爲這將是愚蠢的。

我想知道的是,如果mysql可以在不查詢所有值的情況下返回有序查詢中的值的索引。

謝謝!

更新#1

,我想這個樣子的(感謝bluefeet)查詢:

SELECT rownum FROM (
SELECT col1, @rownum:[email protected]+1 AS rownum 
FROM yourtable, 
(SELECT @rownum:=0) table1 
ORDER BY col1) table2 
WHERE col1=11 

,你可以在這裏進行測試http://sqlfiddle.com/#!2/a21c8/12

回答

3

MySQL沒有一個rownum本身,而是你可以模擬它通過以下方式:

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

看到SQL Fiddle with Demo

使用此可以判斷rownumber這可能給你想你所需要的。

如果你再想特定rownumber,你可以在一個子查詢包裹的:

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

看到SQL Fiddle with demo

+0

感謝您給我們!在這個範例中,假如我想知道他在有序表中的位置,我怎麼才能得到表值「147」的值「6」。 – Mike

+1

@mugur請參閱我的編輯,您可以使用'WHERE'來指定'rownum'返回。 – Taryn

+0

謝謝!我終於明白,我可以創建嵌套的派生表:),你可以在更新中看到1 – Mike

2

MySQL沒有這是一個特殊的功能(我知道),但你可以使用stored procedure來計算結果。儘管如此,你仍然需要通過大量的數據來計算索引,所以在大數據集上這會很昂貴。