2010-12-07 42 views
0

我有MySQL中的問題,我有ID和2-14的表...財產以後這樣的MySQL的排序表,並得到行的位置

 
ID -------- number 
3 -------- 340 
1 -------- 10 
12 -------- 23

現在我想通過ID來selecet,假設ID = 3,並且有沒有方法說明排序表中該行的位置?在這種情況下,ID = 3將具有第一位置,最高值的數量。 ID = 12將有第二位......等等。

回答

0

如果你返回通過PHP中的結果,你可以使用PHP使用array_search

確定數組的ID字段中的值「3」的位置,或者改變您的SQL如下:

select 
@rownumber:[email protected] as 'rownumber', 
id_field, number_field 
from yourtable, (SELECT @rownumber:=0) rownumber order by number_field DESC 

這將增加一個額外的列「ROWNUMBER」提供的每一行

+0

Thnak你,這個工程,但只有如果我想打印所有的結果循環像或while foreach在PHP中。 – Martin 2010-12-07 13:58:29

+0

我想要的是在有序表格中找到該行的位置並僅打印此值...如果您知道我的意思,則不想在數據庫中使用大量用法:( – Martin 2010-12-07 13:59:13

0

的號碼,如果有用的嘗試此查詢。

SELECT ID,number FROM table_name ORDER BY number DESC; 

謝謝。

1
set @row_number:=0; 
select * from 
    (select ID, @row_number:[email protected]_number+1 from your_table order by number desc) 
    as row_to_return 
where ID=3; 

以上查詢可以更改爲將ID替換爲您需要的任何東西。
但是,對於簡單的用法,ORDER BY number DESC是更好的和優化的。