有表A、B,
A表的结构如下:
ID  colA colB colC
1     a    b   c
2     x    y   z
表B
colA  colB colC
a      b     o
x      y     p
m      n     q
...现在要从B表中插入更新数据到A表中,规则如下:
如果B表中存在与A表中colA colB相同的行,则用B表colC的数据更新A表中ColC的数据,如果B表中有A表中不存在的行,则插入新行到A表中,怎样写这样的语句?
语句成功后,A表的数据如下:
ID  colA colB colC
1     a    b   0
2     x    y   p
3     m    n   q

解决方案 »

  1.   

    兩步Update A Set A.colC = B.colC From A Inner Join B On A.colB = B.colBInsert A(colA, colB, colC) Select colA, colB, colC From B Where colB Not In (Select colB From A)
      

  2.   

    谢谢paoluo(一天到晚游泳的鱼),后面这句Insert A(colA, colB, colC) Select colA, colB, colC From B Where colB Not In (Select colB From A)有点问题,因为colA和ColB决定是否插入新行,单独的colB有可能有重复数据
      

  3.   

    不好意思,居然看錯了,兩句都改下Update A Set A.colC = B.colC From A Inner Join B On A.colA = B.colA And A.colB = B.colBInsert A(colA, colB, colC) Select colA, colB, colC From B 
    Where Not Exists (Select colA, colB From A Where colA = B.colA And colB = B.colB)