update ipgroup a set flag=0 where a.id  <>(select min(id) from ipgroup where iplong=a.iplong) 在MYSQL里不好运行
提示1093错误:you can't specify target table for update in from clause
高手来改

解决方案 »

  1.   

    update ipgroup a ,(select iplong,min(id) as ma from ipgroup group by iplong) b
    set flag=0 where a.iplong=b.iplong and a.id<>b.ma
      

  2.   

    能这样写吗 
    加个逗号然后跟的一句,(select iplong,min(id) as ma from ipgroup group by iplong) b不理解
    SQL语句变化真大
    和在学校学的理论有很大的差别
    呵呵
      

  3.   

    实践出真知,你试试,看看结果是否正确。从你的SQL语句逻辑来看,应该没有问题。
      

  4.   

    数据量很大
    要等大概30分钟有结果
    一会看看update ipgroup a ,(select iplong,min(id) as ma from ipgroup group by iplong) b把a中的flag=0update了,那有没有update b啊?
      

  5.   

    1.update ipgroup a set flag=0 where a.id <>(select min(id) from ipgroup where iplong=a.iplong) 
    这个语句应该也是对的吧,只是不能在MYSQL上运行,是这样的吗? 2.第一次见到,(select iplong,min(id) as ma from ipgroup group by iplong) b 
    加个逗号,插入一个语句