加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – Oracle合并对选择然后插入或更新

发布时间:2020-12-12 08:33:59 所属栏目:MsSql教程 来源:网络整理
导读:什么是更快? 合并声明 MERGE INTO table_name USING dual ON (row_id = 'some_id') WHEN MATCHED THEN UPDATE SET col_name = 'some_val' WHEN NOT MATCHED THEN INSERT (row_id,col_name) VALUES ('some_id','some_val') 要么 查询select语句,然后使用updat
什么是更快?

合并声明

MERGE INTO table_name 
     USING dual
     ON (row_id = 'some_id')
    WHEN MATCHED THEN
     UPDATE SET col_name = 'some_val'
    WHEN NOT MATCHED THEN
     INSERT (row_id,col_name)
     VALUES ('some_id','some_val')

要么

查询select语句,然后使用update或insert语句.

SELECT * FROM table_name where row_id = 'some_id'

如果rowCount == 0

INSERT INTO table_name (row_id,col_name) VALUES ('some_id','some_val')

其他

UPDATE table_name SET col_name='some_val' WHERE row_id='some_id'

解决方法

经验法则是,如果您可以在一个SQL中执行此操作,则通常会在多个SQL语句中执行更好.

如果这样做,我会和MERGE一起去.

另外 – 另一个建议:你可以避免在你的声明中重复数据,例如:

MERGE INTO table
 USING (SELECT 'some_id' AS newid,'some_val' AS newval
        FROM dual)
 ON (rowid = newid)
WHEN MATCHED THEN
 UPDATE SET colname = newval
WHEN NOT MATCHED THEN
 INSERT (rowid,colname)
 VALUES (newid,newval)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读