我的语句是这样
update 表1 set 表1.a=(select 表2.b where 表1.c=表2.d)
这个语句是可以执行的,但是它会把表1没有在表2中找到匹配项的那些行全置为空,请问怎么改语句才能只修改表1中c字段在表2中字段有相等的情况。
比如
表1
a    c
xy   1
dd   2
yy   3
ee   4表2
b    d
aa   1
ff   2
rr   3
 
如果用我的语句,结果会是
表1
a    c
aa   1
ff   2
rr   3
     4
其中表1.c=4时,表1.a为空。现在我需要不去修改表1.c=4的情况,请问如果修改语句。谢谢了!非常急!!在线等!

解决方案 »

  1.   

    update a set a.a=b.b from 表1 a inner join 表2 b on a.c=b.c
      

  2.   

    用inner join ,你写的相当于left join 
      

  3.   

    update a set a.flag2=b.dd from sbfw a inner join guapai b on a.parentid=b.otherflag
    DB21034E  该命令被当作 SQL
    语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
    SQL0204N  "ADMINISTRATOR.A" 是未定义的名称。  SQLSTATE=42704SQL0204N  "ADMINISTRATOR.A                                                       " 是未定义的名称。
    我的是DB2数据库
      

  4.   

    晕,那怎么搞到sql版来了老大,帮你顶吧
      

  5.   

    update sbfw set sbfw.flag2=guapai.dd from sbfw  inner join guapai on sbfw.parentid=guapai.otherflag
    update sbfw set sbfw.flag2=guapai.dd from sbfw  inner join guapai on sbfw.parentid=guapai.otherflag
    DB21034E  该命令被当作 SQL
    语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
    SQL0104N  在 "BEGIN-OF-STATEMENT" 之后发现意外的标记 "update SBFW set
    SBFW.FLAG2=guapai.dd"。期望的标记可能包括:"<space>"。  SQLSTATE=42601SQL0104N  在 "BEGIN-OF-STATEMENT" 之后发现意外的标记 "update SBFW set SBFW.FLAG2=guapai.dd"。期望的标记可能包括:"<space>       "。
      

  6.   

    难道db2版连语句搞不定,楼主转用sql算了
      

  7.   

    db2资料太少 又都是英文,用起来费劲啊
    谁想用DB2阿  没办法阿
      

  8.   

    SET NOCOUNT ON
    if object_id('T1')IS NOT NULL DROP TABLE T1
    GO
    CREATE TABLE T1(a VARCHAR(2),    c INT) 
    INSERT T1 SELECT 'xy',  1 
    INSERT T1 SELECT 'dd',  2 
    INSERT T1 SELECT 'yy',  3 
    INSERT T1 SELECT 'ee',  4 
    if object_id('T2')IS NOT NULL DROP TABLE T2
    GO
    CREATE TABLE T2(B VARCHAR(2),    D INT)  
    INSERT T2 SELECT 'aa',  1 
    INSERT T2 SELECT 'ff',  2 
    INSERT T2 SELECT 'rr',  3 
    UPDATE T1  SET
    T1.a=T2.b FROM T1, T2 WHERE  T1.c=T2.D
    SELECT * FROM T1
    /*a    c           
    ---- ----------- 
    aa   1
    ff   2
    rr   3
    ee   4
    */
      

  9.   

    DB2只能幫頂了,這簡單的問題,DB2版無人給解?