我有这张桌子
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
答案 0 :(得分:4)
没有
表中没有“行号”这样的东西;只有在ORDER BY
(或可能是GROUP BY
)所充实的排序中。
表中的记录没有固有的排序,即使没有ORDER BY
子句,出于实现原因,您可能经常会看到它们按插入顺序显示。
如果您想使用广告订单,请添加自动递增ID
列并使用该列。
答案 1 :(得分:1)
拥有“行号”的唯一“快速”方式是添加“行计数器”列:) 问题在于,当您删除其中一些记录时,您必须保持记录的最新状态。如果没有DELETE操作(或者它们非常有限),则列是可接受的选择。