我有两个表 A 和 B, A 包含字段 Aid 和 sum, B 包含字段 Bid, x1 和 x2, Bid 是 B 表中唯一的,不过A 表中的Aid则不是唯一的,并且Aid 与 Bid 是多对一的关系,现在我想实现以下的功能:将 A.C > (B.x1 - B.x2) 的所有A.c 都更新为 (B.x1 - B.x2), 请问sql 语句的写法

解决方案 »

  1.   

    TRY:
    UPDATE A LEFT JOIN B ON AID=BID SET A.C=IF(A.C>(B.x1 - B.x2),(B.x1 - B.x2),A.C)
      

  2.   

    sorry,A 包含 Aid 和 C
      

  3.   

    UPDATE A LEFT JOIN B ON a,AID=b.BID SET A.C=IF(A.C>(B.x1 - B.x2),(B.x1 - B.x2),A.C)
      

  4.   

    多谢wwwwb,原来sql语句里还能用if 这样的逻辑操作呀,应该是没问题的,我想更进问一下条件加强的情况,加强条件如下:
    B.x1 > 0 and B.x2 > 0 and B.x1 > B.x2
      

  5.   


    update A,B set A.c = (B.x1 - B.x2) where A.Aid = B.bid and A.C > (B.x1 - B.x2)
      

  6.   

    感觉这条if 语句象C里的 (a > b) ? a : b,是这样的吗
      

  7.   


    UPDATE A LEFT JOIN B ON a,AID=b.BID SET A.C=IF(A.C>(B.x1 - B.x2),(B.x1 - B.x2),A.C)
    where B.x1 > 0 and B.x2 > 0 and B.x1 > B.x2
      

  8.   

    to yueliangdao0608: update 后可以接两个表名吗
      

  9.   

    update 后可以接两个表名吗
    可以,内连接
    update a,b set ... where ...