java - 如何更新表中的字段并将其插入新表而不更新旧表
问题描述
我正在使用 JDBC 连接处理 java 并尝试执行 DDL 命令。在这里,我对一个特定的流程有疑问,这可能吗?如果是的话,你能解释一下如何以及如何处理示例。
我正在尝试从包含 item_id、sale_price、描述、条形码列的项目表中选择数据,并希望更新item_id = 9的条形码数据并插入到item_duplicate表中。无需更新项目表。但item_dupliacte表应包含条形码的更新值。
MERGE item_duplicate AS D
USING item AS I
ON (D.item_id = I.item_id )
WHEN MATCHED
THEN UPDATE set D.part_no='new part'
WHEN NOT MATCHED BY D
THEN
INSERT (item_id,part_no,sale_price,description,barcode)
SELECT i.ITEM_ID,i.PART_NO,i.SALE_PRICE,i.DESCRIPTION,b.BARCODE
FROM item i
JOIN item_barcode b
ON b.ITEM_ID = i.ITEM_ID
WHERE i.ITEM_ID = ?
WHEN NOT MATCHED BY I
THEN DELETE;
解决方案
一个简单的插入到 select from。
CREATE TABLE dbo.TEST
(
item_id INT NOT NULL
, barcode VARCHAR (20) NULL
, sale_price DECIMAL (14, 2) NULL
, description VARCHAR (100) NULL
, PRIMARY KEY (item_id)
)
CREATE TABLE dbo.TEST_COPY
(
item_id INT NOT NULL
, barcode VARCHAR (20) NULL
, sale_price DECIMAL (14, 2) NULL
, description VARCHAR (100) NULL
, PRIMARY KEY (item_id)
)
INSERT INTO TEST_COPY (item_id, barcode, sale_price, description) SELECT item_id, '9999' as barcode, sale_price, description FROM TEST WHERE item_id = 9
推荐阅读
- c# - Xamarin ListView ObservableCollection 不更新
- sql - typeorm querybuilder:仅选择关系的关系
- python - 我的 python 安装已损坏,尝试使用 pip 时看到 md5/sha1 错误
- bash - Bash脚本:为什么在if语句中调用函数与单独调用函数不同
- javascript - 如何要求输入字段包含三个以上的字符?
- javascript - 在 Angular 8 中动态添加嵌套组件
- sql - 避免在 posgresql 查询中与生成的系列连接时出现间隙
- r - 从整数(十进制 UTF-16 编码)转换为 R 中的字符
- python - Scipy curve_fit 不适合简单的指数
- c# - 选择 DataGridRow 时如何仅显示 RowDetails(而不是行)?