从mysql获取最后一条记录
我正在使用mysql并遇到一些问题。我想检索插入的最后一行。
<<以下是详细>>
以下是我创建表格的方式。
create table maxID (myID varchar(4))
我在其中插入了四个值,如下所示
insert into maxID values ('A001')insert into maxID values ('A002')
insert into maxID values ('A004')
insert into maxID values ('A003')
当我执行时select myID, last_insert_id() as NewID from maxID
,我得到如下输出
myId NewIDA001 0
A002 0
A004 0
A003 0
当我尝试下面的代码时,
select myId, last_insert_id() as NewID, @rowid:=@rowid+1 as myrow from maxID,
(SELECT @rowid:=0) as init
我得到如下输出。
myId NewID rowidA001 0 1
A002 0 2
A004 0 3
A003 0 4
但是,当我使用代码时select myId, last_insert_id() as NewID, @rowid:=@rowid+1 as myrow
from maxID, (SELECT @rowid:=0) as init where @rowid = 4,出现错误Uknown column
'myrow' in where clause
使用时where @rowid=4
,表中没有任何数据。
回答:
这里我使用4只是为了获得所需的输出。稍后我可以从查询中获取(select max(rowid) from maxID)
如果我只想查看最后一条记录,请建议我该怎么做A003
。
谢谢你的时间。
回答:
回答:
回答:
似乎SELECT
不能保证a以任何特定顺序返回行(ORDER BY
当然,不使用子句)。
根据SQL-92标准(第373页):
如果未指定
,则 指定的表为T,并且T中的行顺序与实现有关。
好的,MySQL并不完全符合SQL-92,但这是一个严重的提示。
Laurynas
Biveinis(显然隶属于Percona)还指出:
ORDER BY
由于月相的原因,没有子句(…)的行的顺序可能会有所不同,这是可以的。
在MySQL手册说,大约InnoDB的:
如果存在,InnoDB总是根据 _[a
PRIMARY KEY
或NOT NULL UNIQUE
索引]_对表行进行排序。
就我而言,我 认为 MySQL也可以OPTIMIZE
TABLE在多次删除和插入后重新排序行,甚至重用空白空间(我试图找到一个示例,但到目前为止还是失败了)。
鉴于您的表结构,不幸的是底线如此之多,以至于许多因素可能改变了行的顺序。我找不到可靠地确定它们插入顺序的解决方案。当然,除非自创建表以来保留所有二进制日志,否则;)
但是,您可能仍想sequence
在表中添加一列。现有行将被分配可能不正确的序列号,但是至少将来的行将被正确排序。
ALTER TABLE maxID ADD sequence INT DEFAULT NULL;ALTER TABLE maxID ADD INDEX(sequence);
ALTER TABLE maxID MODIFY sequence INT AUTO_INCREMENT;
http://sqlfiddle.com/#!2/63a8d/1
以上是 从mysql获取最后一条记录 的全部内容, 来源链接: utcz.com/qa/430351.html