DB2插入如果不存在并选择

时间:2012-05-25 20:49:02

标签: sql select insert db2

我有一个DB2数据库表

Users
------
userId: BIGINT

我需要从表中为用户返回一行。如果该行不存在,则应插入并返回。 是否有一个声明可以做到这一点

1 个答案:

答案 0 :(得分:3)

如果表中不存在ID,您可以使用MERGE进行插入,如下所示:

MERGE INTO Users u (userId) 
USING (VALUES (123)) AS m (userId)
ON u.userId = m.userId
WHEN NOT MATCHED THEN
        INSERT (userID)
        VALUES (m.userId)
ELSE IGNORE

还有一个声明允许您获取插入表格的内容(在INSERT页面上搜索data-change-table-reference):

SELECT *
FROM NEW TABLE (
    INSERT INTO Users(userId)
    VALUES (123), (234)
)

不幸的是,您不能将这两个语句组合在一个语句中。我认为,如果您需要唯一值,您可以做的最好的事情就是使用INSERT方法和compound SQL并处理-803 SQLCODE