mysql获得真正的行号

时间:2011-09-24 16:16:17

标签: mysql

我有这张桌子

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

如何知道第一个'anton'是否是第4号记录?

有比这更快的查询...

select rank from (select @rownum:=@rownum+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

2 个答案:

答案 0 :(得分:4)

没有

表中没有“行号”这样的东西;只有在ORDER BY(或可能是GROUP BY)所充实的排序中。

表中的记录没有固有的排序,即使没有ORDER BY子句,出于实现原因,您可能经常会看到它们按插入顺序显示。

如果您想使用广告订单,请添加自动递增ID列并使用该列。

答案 1 :(得分:1)

拥有“行号”的唯一“快速”方式是添加“行计数器”列:) 问题在于,当您删除其中一些记录时,您必须保持记录的最新状态。如果没有DELETE操作(或者它们非常有限),则列是可接受的选择。