0

Oracleでクエリを作成する必要がありますが、SQLServerに精通しています。

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

これは、Oracle11gの正しい構文である必要があります。私は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 に答える