我需要在Oracle中编写查询,但我对SQL Server更熟悉。
在SQL Server中,查询将如下所示:(简化)
if exists (
select * from table where a=1
)
begin
update table set b=1 where a=1
end else
begin
insert table (a,b) values(1,1)
end
感谢您的帮助:)
=============================================== ================================
这是Merge选项,(我认为):
MERGE INTO table T
USING (
SELECT a,b
FROM table
) Q
ON T.a = Q.a
WHEN MATCHED THEN
UPDATE SET T.a = 1
WHEN NOT MATCHED THEN
INSERT table (a,b) VALUES (1,1);
这是对的吗?
答案 0 :(得分:2)
这应该是Oracle 11g的正确语法。我不是Oracle的专家,所以也许其他人可以更好地解释它,但我相信在插入新值时会使用dual
表,或者从另一个表中尝试过合并。
MERGE INTO table1 T
USING (
SELECT 1 a, 1 b FROM dual
) Q
ON (T.a = Q.a)
WHEN MATCHED THEN
UPDATE SET b = 1
WHEN NOT MATCHED THEN
INSERT (a,b) VALUES (Q.a,Q.b);