例如:  t1(id int, c1 int, c2 int);
        t2(id int, c1 int, c2 int, c3 int);
目的:将t1中的id列移到t2中的c3列,条件是 t1.c1 = t2.c1 and t1.c2 = t2.c2我试着写了一个:update t2 set t2.c3 = (select t1.id from t1 where t1.c1 = t2.c1 and t1.c2 = t2.c2) 
where exists(select t1.id from t1 where t1.c1 = t2.c1 and t1.c2 = t2.c2);执行结果总是说...more then one rows(有点记不清了,回头补上), 好像是说set t2.c3 = 多行了请教各位大侠帮忙~  
谢谢!

解决方案 »

  1.   

    where t1.c1 = t2.c1 and t1.c2 = t2.c2 这个条件下,t1 表中有多条符合条件的,所以MYSQL不知道以哪一条来更新,报错了。你想如何处理这多条记录呢?用哪一条更新。
      

  2.   


    比如:t1:id   c1   c2
    1    3    3
    2    4    4
    3    5    5t2:  id   c1   c2   c3
    1    3    3
    2    4    4
    3    5    5更新后:
    t2为:id   c1   c2   c3
    1    3    3    1
    2    4    4    2
    3    5    5    3不知道我这样说清楚了没? 
      

  3.   

    说清楚了,不过建议你自己先用上面你提供的数据测试一下,应该不会有任何问题!
    问题在于你在 t1 表中有重复的 c1,c2, 这个已经在一楼的回复中说明了。不知道我这样说清楚了没有。
    当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
      

  4.   


    嗯,是t2表里有重复的。比如:t1:id  c1  c2
    1    3    3
    2    4    4
    3    5    5t2: id  c1  c2  c3
    1    3    3
    2    4    4
    3    5    5
    4    3    3
    5    4    4更新后:
    t2为:id  c1  c2  c3
    1    3    3    1
    2    4    4    2
    3    5    5    3 
    4    3    3    1
    5    4    4    2如果这样的话,如何解决呢?
    PS:我现在没法测试,等晚上才有条件~
      

  5.   

    问题在于你在 t1 表中有重复的 c1,c2, 这个已经在一楼的回复中说明了。不知道我这样说清楚了没有。如果别人的回复你从来不看,那回复还有什么意义?
      

  6.   


    我看了呀,你说的我也清楚,所以我又恢复加了些数据来说明我要实现的东西,怪我没有表达清楚,
    相信LS已经清楚我的要实现什么, 我现在最想知道的是,如何即什么样的SQL能够解决我要实现的情况?
    谢谢!
      

  7.   

    那请指出,T1表中哪两条的 c1,c2 是重复的。
      

  8.   

    哦,对不起,忘了说一点,t1中的c1和c2组合起来是不重复的,t2中的重复,这样的话,我的SQL语句就不该没问题?如果这样的话,我回去就要查看下我的数据了~ 但是感觉数据有问题的概率很小~