如题这个问题怎么解决
网上说是因为游标的问题
可是我并没有对这个表建立游标阿

解决方案 »

  1.   

    好象回复过一次了 :-)
    不是游标的问题是你的SQL语句中出现了应该是一个值的地方,你返回了一个集。比如 update tblXX set cola=(select id from tlbYY where id <10)又或者select * from tblXX where id =(select id from tblYY where id>10);
      

  2.   

    恩,一个查询结果有多行,然后赋值给一个字段或者变量,就会出现这个异常了。比如楼上的
    select id from tlbYY where id <10应该有9行结果吧,也就是有9个id,怎么赋值给一个 cola呢?你的语句应该保证查询结果只有一行,大不了用limit 1哦!
      

  3.   

    比较简单的方法是, 一句把user 和 stu的记录一起删除。delete u,s from user u inner join stu s on u.id=s.id inner join (
    select id from user a where exists (select id from user where name=a.name and id>a.id)
    ) b on u.id=b.id
      

  4.   

    或者仍然在你的存储过程中用游标来解决。或者说直接改为select group_concat(min_id) into xid from (sellect name ,min(id) as min_id from user group by name) c
    delete from stu where not FIND_IN_SET(id,xid);
    delete from user where not FIND_IN_SET(id,xid);
      

  5.   

    或者按照 java2000_net  的建议用 limit来逐次更新,删除。