表格式:CREATE TABLE `dsdvrdbe`.`areaindex` (
`id` bigint(20) unsigned NOT NULL,
`pointbegin` bigint(20) unsigned NOT NULL,
`pointend` bigint(20) unsigned NOT NULL,
`DVR` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
id可以保证一直式在增加,但不连续。现在要update 最后一条的pointendupdate dsdvrdbe.areaindex
set pointend=90 order by id desc limit 1;
这样可以,但是报不安全update dsdvrdbe.areaindex
set pointend=90 where id =(select max(id) from dsdvrdbe.areaindex)
索性执行不了,请问有什么好办法吗? 谢谢。
`id` bigint(20) unsigned NOT NULL,
`pointbegin` bigint(20) unsigned NOT NULL,
`pointend` bigint(20) unsigned NOT NULL,
`DVR` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
id可以保证一直式在增加,但不连续。现在要update 最后一条的pointendupdate dsdvrdbe.areaindex
set pointend=90 order by id desc limit 1;
这样可以,但是报不安全update dsdvrdbe.areaindex
set pointend=90 where id =(select max(id) from dsdvrdbe.areaindex)
索性执行不了,请问有什么好办法吗? 谢谢。
set pointend=90 order by id desc limit 1;这个应该是比较好的方法,效率上比较高。
当然你也可以用下面UPDATE语句。
update dsdvrdbe.areaindex a inner join (select max(id) as id from dsdvrdbe.areaindex) b on a.id=b.id
set a.pointend=90
id可以保证一直式在增加,但不连续。
只要顺序从小->大就可以
update dsdvrdbe.areaindex
set pointend=90 order by id desc limit 1;