Sql 如果Oracle上不存在用于插入或更新的
我想插入一行,如果该行不存在,如果它存在,我想更新该行。我目前正在使用PLSql Oracle。 当我想写这样的查询时Sql 如果Oracle上不存在用于插入或更新的,sql,oracle,if-statement,Sql,Oracle,If Statement,我想插入一行,如果该行不存在,如果它存在,我想更新该行。我目前正在使用PLSql Oracle。 当我想写这样的查询时 IF NOT EXIST (SELECT * FROM TABLE_NAME WHERE ID=1) INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'CAGDAS SANCARBARLAZ') ELSE UPDATE TABLE_NAME SET NAME='UGUR CAN' WHERE ID=1 如何在Oracle Sql中
IF NOT EXIST (SELECT * FROM TABLE_NAME WHERE ID=1)
INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'CAGDAS SANCARBARLAZ')
ELSE
UPDATE TABLE_NAME SET NAME='UGUR CAN' WHERE ID=1
如何在Oracle Sql中做到这一点?用于此
MERGE INTO TABLE_NAME T
USING (SELECT 1 ID from dual) S
ON (T.ID = S.ID)
WHEN MATCHED THEN UPDATE SET T.NAME='UGUR CAN'
WHEN NOT MATCHED THEN INSERT (ID, NAME) VALUES (1, 'CAGDAS SANCARBARLAZ');
使用
MERGE
语句。提供常量值有点混乱,因为Oracle不支持标准值构造函数,所以需要使用SELECT。。。对于MERGE语句的源,请从DUAL
:
merge into table_name
using (
select 1 as id, 'CAGDAS SANCARBARLAZ' as name from dual
) t on t.id = table_name.id
when matched then update
set name = 'UGUR CAN'
when not matched then insert (id, name) values (t.id, t.name);
我们可以使用合并所需的列名吗?为什么在更新和插入中对
名称使用不同的值?