SQL比较弱,请教大家一个问题
现在有临时表PRE_TAIL_FORM_TMP和普通表PRE_TAIL_FORM,表结构一致,
PRE_TAIL_FORM中存储着全部的业务数据,PRE_TAIL_FORM_TMP存放着该次业务处理的数据,
现需求如下,如果PRE_TAIL_FORM_TMP中的BILL_NO在PRE_TAIL_FORM存在,则更新PRE_TAIL_FORM的数据,
如果不存在则新增数据至PRE_TAIL_FORM。
请问下怎么写SQL比较好。
------解决方案--------------------
1,使用存储过程,写逻辑,两条sql。。。
2,搜索 oracle MERGE,一条sql。。。
参考
- SQL code
SQL> MERGE INTO products p 2 USING newproducts np 3 ON (p.product_id = np.product_id) 4 WHEN MATCHED THEN 5 UPDATE 6 SET p.product_name = np.product_name, 7 p.category = np.category 8 WHERE p.category = 'DVD' 9 WHEN NOT MATCHED THEN 10 INSERT 11 VALUES (np.product_id, np.product_name, np.category) 12 WHERE np.category != 'BOOKS' SQL> /
------解决方案--------------------
最好分两步,先查询,再做更新或插入,如果用的是oracle,建议用更新时用rowid,这样速度比较快
------解决方案--------------------
------解决方案--------------------