表格式: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)
索性执行不了,请问有什么好办法吗? 谢谢。

解决方案 »

  1.   

    update 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 
      

  2.   

    在ID上有索引
    id可以保证一直式在增加,但不连续。
    只要顺序从小->大就可以
    update dsdvrdbe.areaindex
    set pointend=90 order by id desc limit 1;