2013-03-07 155 views
0

我需要在Oracle中编写查询,但我更熟悉SQL Server。SQL Server查询到Oracle查询转换

在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 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

使用MERGE语句。 – Plouf 2013-03-07 10:58:32

+0

这是什么意思?你能举一个关于上述SQL的例子吗?谢谢 – CompanyDroneFromSector7G 2013-03-07 11:01:14

+0

Stackoverflow可以给你很多。 ;)http://stackoverflow.com/search?q=oracle+merge – Plouf 2013-03-07 11:02:19

回答

2

这应该是Oracle 11g的正确语法。我不是甲骨文的专家,所以也许别人可以更好地解释它,但我相信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); 

Working example