Fah*_*kar 2 java mysql sql last-insert-id
我正在使用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')
Run Code Online (Sandbox Code Playgroud)
当我执行时select myID, last_insert_id() as NewID from maxID
,我得到如下输出
myId NewID
A001 0
A002 0
A004 0
A003 0
Run Code Online (Sandbox Code Playgroud)
当我尝试下面的代码,
select myId, last_insert_id() as NewID, @rowid:=@rowid+1 as myrow from maxID, (SELECT @rowid:=0) as init
我得到如下输出.
myId NewID rowid
A001 0 1
A002 0 2
A004 0 3
A003 0 4
Run Code Online (Sandbox Code Playgroud)
但是,当我使用代码时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 myId, @rowid:=@rowid+1 as myrow from maxID, (SELECT @rowid:=0) as init ORDER BY myrow desc LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
在我的控制台中,我得到以下内容:
mysql> select myId, @rowid:=@rowid+1 as myrow from maxID, (SELECT @rowid:=0) as
init ORDER BY myrow desc LIMIT 1;
+------+-------+
| myId | myrow |
+------+-------+
| A003 | 4 |
+------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
UPDATE
牦牛是对的.我的解决方案不是确定性的.也许它适用于少量记录.我发现大量的post abount不可靠的SELECT语句的默认排序(例如这里).下一步:
我知道这不是答案,但说明问题会限制问题.
归档时间: |
|
查看次数: |
5567 次 |
最近记录: |