2011-09-24 54 views
1

我有這個表的MySQL得到真正的行號

mysql> select name from test; 
+---------+ 
| name | 
+---------+ 
| foo  | 
| bar  | 
| foobar | 
| anton | 
| budi | 
| anton S | 
+---------+ 
6 rows in set (0.00 sec) 

如何知道第一「安東」是創紀錄的4號?

有什麼比這更快的查詢......

select rank from (select @rownum:[email protected]+1 rank,p.name from test p, (SELECT @rownum:=0) r) a, (select * from test where name like 'anton%' limit 1) b where b.NAME = a.name 
+0

您沒有「id」列嗎? –

+0

定義「記錄編號4」。 –

+0

使它在腳本只是乘以$我*抵消,多數民衆贊成在簡單和快速.. –

回答

4

沒有在表中的「行號」沒有這樣的事;僅在由ORDER BY(或可能的GROUP BY)產生的訂購中。

表中的記錄沒有固有的排序,即使沒有ORDER BY子句,由於實現原因,您可能經常碰巧看到它們按插入順序呈現。

如果您想要使用插入順序,請添加一個自動遞增的ID列並使用它。

1

有一個「行號」的唯一「快速」方法是添加一個「行計數器」列:) 問題是你必須保持你的記錄是最新的,當你刪除其中的一些。如果沒有DELETE操作(或者它們非常有限),則列將是可接受的選擇。

+0

添加「行號」列不起作用,當我使用'ORDER BY'排序表。 –