oracle 两个表合并成一个表 merge

MERGE INTO a 
USING b
ON ( a.id = b.id ) -- 条件是 id 相同
WHEN MATCHED THEN UPDATE SET a.name = b.name -- 匹配的时候,更新
WHEN NOT MATCHED THEN INSERT(a.id,a.name) VALUES(b.id, b.name) -- 源表有,目标表没有,插入

转载于:https://www.cnblogs.com/lingbaozhangqian/p/3599957.html

Oracle 数据库中,多个用户合并可以根据不同的需求采用不同的方法。 ### 数据合并MERGE 语句) 如果要根据一定条件合并两个的数据,可使用 MERGE 语句。例如,若有两个 `members` 和 `member_staging`,当两个的 `member_id` 列中的值相等,且 `first_name`、`last_name` 或 `rank` 列的值不同时,将 `members` 中的这些列的值更新到 `member_staging` 对应列,否则将 `members` 的行直接插入 `member_staging` ,示例代码如下: ```sql MERGE INTO member_staging ms USING members m ON (ms.member_id = m.member_id) WHEN MATCHED AND (ms.first_name != m.first_name OR ms.last_name != m.last_name OR ms.rank != m.rank) THEN UPDATE SET ms.first_name = m.first_name, ms.last_name = m.last_name, ms.rank = m.rank WHEN NOT MATCHED THEN INSERT (member_id, first_name, last_name, rank) VALUES (m.member_id, m.first_name, m.last_name, m.rank); ``` 这里是利用了 MERGE 语句的特性,根据匹配条件进行更新或插入操作,体现了 Oracle 数据库在数据合并方面的强大功能 [^3]。 ### 字段合并 当需要将多个的字段进行合并时,比如涉及到年月日数据的处理,可将数据库中年月日合并一个完整时间,然后再和前端时间参数比较。可以在 SQL 中实现,示例代码及解释(假设名为 `your_table`,有 `year`、`month`、`day` 字段): ```sql -- 将年月日合并日期类型 SELECT TO_DATE(year || '-' || month || '-' || day, 'YYYY-MM-DD') AS full_date FROM your_table; ``` 这种方式先将年月日数据进行合并,转化为日期类型,方便后续与前端时间参数进行比较等操作 [^2]。 ### 多查询合并数据 在实际应用中,若所需信息分散在多个相互关联中,可通过各种类型的连接 (JOIN) 和子查询 (Subquery)(包括内联视图)来合并数据。例如,有两个关联 `table1` 和 `table2` 通过 `id` 关联,使用内连接查询合并数据: ```sql SELECT * FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id; ``` 这里使用内连接将两个中 `id` 相等的行的数据合并在一起,体现了 Oracle SQL 强大的多查询能力 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值