各位好,
问题如下。有2个表,table_a和table_b
table_a的字段: PRODUCT1, PRODUCT2, PRODUCT3,
SERIAL1, SERIAL2, SERIAL3,
SUB_PRODUCT1, SUB_PRODUCT2, SUB_PRODUCT3,
SUB_SERIAL1, SUB_SERIAL2, SUB_SERIAL3,
XXX1, XXX2...table_b的字段: PRODUCT1, PRODUCT2, PRODUCT3,
SERIAL1, SERIAL2, SERIAL3,
SUB_PRODUCT1, SUB_PRODUCT2, SUB_PRODUCT3,
SUB_SERIAL1, SUB_SERIAL2, SUB_SERIAL3,
YYY1, YYY2...
两个表的PK都是SERIAL1,SERIAL2,SERIAL3,SUB_SERIAL1,SUB_SERIAL2,SUB_SERIAL3目的:想从table_a中检索出与table_b中SUB_SERIAL1,2,3值相同的数据,
并且用table_b的PRODUCT1,2,3, SERIAL_1,2,3字段去更新对应的table_a表的SUB_PRODUCT1,2,3, SUB_SERIAL_1,2,3字段。
但是如果有SERIAL,SUB_SERIAL1,2,3冲突时,需要删除table_a中冲突的那条记录,再更新。
因为数据量很大,并且循环操作,所以性能方面也需要考虑。
是不是用游标能实现?SQL学得不精,请大家多指教。
问题如下。有2个表,table_a和table_b
table_a的字段: PRODUCT1, PRODUCT2, PRODUCT3,
SERIAL1, SERIAL2, SERIAL3,
SUB_PRODUCT1, SUB_PRODUCT2, SUB_PRODUCT3,
SUB_SERIAL1, SUB_SERIAL2, SUB_SERIAL3,
XXX1, XXX2...table_b的字段: PRODUCT1, PRODUCT2, PRODUCT3,
SERIAL1, SERIAL2, SERIAL3,
SUB_PRODUCT1, SUB_PRODUCT2, SUB_PRODUCT3,
SUB_SERIAL1, SUB_SERIAL2, SUB_SERIAL3,
YYY1, YYY2...
两个表的PK都是SERIAL1,SERIAL2,SERIAL3,SUB_SERIAL1,SUB_SERIAL2,SUB_SERIAL3目的:想从table_a中检索出与table_b中SUB_SERIAL1,2,3值相同的数据,
并且用table_b的PRODUCT1,2,3, SERIAL_1,2,3字段去更新对应的table_a表的SUB_PRODUCT1,2,3, SUB_SERIAL_1,2,3字段。
但是如果有SERIAL,SUB_SERIAL1,2,3冲突时,需要删除table_a中冲突的那条记录,再更新。
因为数据量很大,并且循环操作,所以性能方面也需要考虑。
是不是用游标能实现?SQL学得不精,请大家多指教。
A or B or C:SUB_PRODUCT1,2,3和SUB_SERIAL1, 2, 3
table_a
X-A
X-Ctable_b
B-A
C-B执行后:
table_a
X-C
C-B
B-A
table_a
X-B (update)
X-C
B-A (insert)table_b
B-A
C-B
第2次loop后,这时候用table_b的C-B去更新table_a的X-B,
会更新为X-C,这就和原来那条X-C冲突了。目的就是想把原来那条删除后再更新。
table_a
X-B
X-C
B-A
table_b
B-A
C-B
第一次loop时,也就是用B-A的B,去更新X-A的A,变为X-B。再把b表的B-A,插入a表。
第2次loop时,b表的C-B,匹配上了a表的X-B,这时候应该更新为X-C,但是a表中原来已经有X-C了,就冲突了,
需要先删掉原来得X-C,再更新。并把C-B,插入a表。
后面同样的循环,直到b表的数据遍历结束。