更新table2里的一条记录,记录里的某个字段的值需从table1获取。其中,两个表的ID均为自动编号,table2的字段ID_2是table1的ID值(做关联)。语句如下:UPDATE table2 SET table2.ID_2=(SELECT table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY')  table2.字段3='ZZZ'  WHERE table2.ID=101错误提示:操作必须使用一个可更新的查询。

解决方案 »

  1.   

    UPDATE table2 SET table2.ID_2=(SELECT table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY'),table2.字段3='ZZZ'  WHERE table2.ID=101
      

  2.   

    逗号是我疏漏了,谢谢。还是不行。
    改成下面的也不行:UPDATE table2 SET table2.ID_2=(SELECT table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY')   WHERE table2.ID=101
      

  3.   

    有可能SELECT table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY'你这个语句没有返回数据,导致取不到id。
      

  4.   

    table1.字段1='XXX' AND table1.字段2='YYY'
    符合这个查询的记录在table1里确实是有的。
      

  5.   

    两个表的ID均为自动编号
    =============================
    对于identity 标识的字段不能修改;
      

  6.   

    是不是SELECT table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY'数据大于一条 
    改为
    SELECT top 1 table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY'
      

  7.   

    UPDATE table2 SET table2.ID_2=(SELECT table1.ID FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY'),table2.字段3='ZZZ'  WHERE table2.ID=101
    提示:操作必须使用一个可更新的查询UPDATE table2 SET(table2.ID_2,table2.字段3)=(SELECT table1.ID, 'ZZZ' FROM table1 WHERE table1.字段1='XXX' AND table1.字段2='YYY')   WHERE table2.ID=101
    提示:UPDATE语句的语法错误
      

  8.   

    补充:table2有自动编号的字段ID,和与table1关联的字段ID_2(更不是权限的问题,把"SELECT..."改为字符,测试了一下,是可以的)