解决方案 »

  1.   

    不对是什么意思?你少了AB两表的关联条件,比如update A set A.a=B.b from B where a.id=b.id and  B.b='2014-06-02'
      

  2.   

    您要用B表的一个字段更新A表的一个字段吗
    如果是这样的话,一般需要指明两个表的关联字段,如下是一个思路:
    update A
    set A.price = B.price
    from A
    inner join B on A.no=B.no where B.price = 20.5
    说明:A,B两个表通过no关联,当B.price = 20.5 用B.price 更新对应的A.price
      

  3.   

    如果你只取B的一个值,并且A表的那个列全部更新为这个值,就可以不关联,否则要关联,找出“需要update的数据”
      

  4.   

    注意语气,你自己看看你的问题:为什么不对?
    什么叫不对?数据不对?还是报错?说清楚啊update A set A.a=B.b from B where B.b='2014-06-02'你这是笛卡尔积啊,没关联就是笛卡尔积,知道么?
      

  5.   

    update A set A.a=B.b from B where B.b='2014-06-02'等价于:
    update A set A.a=B.b from a, B where B.b='2014-06-02'
    那么你可以试一下:
    select a.*,b.*,a.a,b.b
    from a, B where B.b='2014-06-02'
    其中a.a,b.b就是你将要更新后的数据。反复看了你的语句,你的语句还可以直接改为:
    update A set A.a='2014-06-02'
    这是全表更新。
      

  6.   

    剛開始我也這樣認為,其實不然。
    當B表中b字段有值等於'2014-06-02',才執行update A set A.a='2014-06-02';
    當B表中b字段沒有值等於'2014-06-02',什麼操作都沒有執行。
    其實還是有條件的
    update A set A.a='2014-06-02' where exists(select * from B where b='2014-06-02')