0

我需要在 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 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);

这个对吗?

4

1 回答 1

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);

工作示例

于 2013-03-07T11:37:32.620 回答