1

我有一个 DB2 数据库表

Users
------
userId: BIGINT

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

4

1 回答 1

3

MERGE当 ID 不存在于表中时,您可以使用插入,如下所示:

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

还有一个语句允许您获取插入到表中的内容(data-change-table-referenceINSERT页面上搜索):

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

不幸的是,您不能将这两个语句组合在一起以在一个语句中完成所有操作。我认为,如果您需要唯一值,您可以做的最好的事情就是将INSERT方法与复合 SQL一起执行并处理-803SQLCODE

于 2012-05-25T22:15:43.387 回答