我有一张桌子
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发布于 2011-09-25 00:18:39
不是的。
表中没有“行号”这样的东西;只有在由ORDER BY (或可能是GROUP BY)灌输的排序中。
表中的记录没有固有的顺序,即使没有ORDER BY子句,由于实现的原因,您可能经常看到它们以插入顺序出现。
如果您想使用插入顺序,请添加一个自动递增的ID列并使用它。
发布于 2011-09-25 00:22:40
拥有“行号”的唯一“快速”方法是添加一个“行计数器”列:)问题是当你删除一些记录时,你必须保持你的记录是最新的。如果没有DELETE操作(或者它们非常有限),列将是一个可接受的选择。
https://stackoverflow.com/questions/7540198
复制相似问题