我要做的是将不同版本插入/更新到产品表中。这是一个PL / SQL块,我有一个包含版本号的变量。让我们说版本是10.现在,我想使用merge语句为同一产品插入或更新版本11 - 15。所以,我需要查看现有产品和表格。版本(我有product_id)。我需要生成数字11到15,并将其与product_id一起检查。所以,我的问题是在using子句中 - 我需要使用我的临时变量生成版本号(11-15),其中包含10和补充作为我的第二列(版本)。请根据我的要求更新我在下面的基础MERGE语句。感谢。
MERGE INTO product a
USING (SELECT product_id,
version_id/variable
FROM product
WHERE product_id = 1234
) b
ON (a.product_id = b.product_id AND a.version_id = b.version_id)
WHEN MATCHED THEN
[UPDATE product]
WHEN NOT MATCHED THEN
[INSERT INTO product]
答案 0 :(得分:3)
您可以使用行生成器,例如这将为您的查询生成版本ID 11到15,以便您的合并可以根据需要插入/更新它们:
MERGE INTO product a
USING (SELECT product.product_id,
q.version_id
FROM product
,(SELECT ROWNUM+10 version_id FROM dual CONNECT BY LEVEL <= 5) q
WHERE product_id = 1234
) b
ON (a.product_id = b.product_id AND a.version_id = b.version_id)
WHEN MATCHED THEN
[UPDATE product]
WHEN NOT MATCHED THEN
[INSERT INTO product]
答案 1 :(得分:0)
选择的答案有点复杂,所以这是我合并到同一个表中的答案
MERGE INTO YOUR_TABLE d
USING (SELECT 1 FROM DUAL) m
ON ( d.USER_ID = '123' AND d.USER_NAME= 'itszaif')
WHEN NOT MATCHED THEN
INSERT ( d.USERS_ID, d.USER_NAME)
VALUES ('123','itszaif');
此命令检查USER_ID
和USER_NAME
是否匹配,如果不匹配,则会插入。