浅谈Oracle数据库中Merge Into的用法

行 ls r, 能 减 少 执 行 多 条 Is r 和 Up a e语 句 , 插 入 或 者 修 ne 它 t n 一 个 d fut 。 不 ea l值
例: 教务 处对计算机专业 学生的《 算法与数据结 构》 成绩做 了部
o ( su e ti = t td n d n m . be ti : t n m.td n_d . u e Li s a d s j c_ u d .
s be ti u jc_d )
w hen m a ched hen t t
改的操作取决于 o n子 句 的条 件 。 这 个 语 法 仅 需 要 一 次 全 表 扫 描 就 完 成 了 全部 工作 , 行 效 率 要 高 于 Is r U d t。 执 n e + p ae t
o u l ae k y n d pi t e  ̄ c
( rei et子句 : 当不符合 o  ̄meg_ sr n 执行 n子句条件时 , 目标表 往
中 插 入 数据 。如 果插 入子 句执 行 , 目标 表 上 插 入 触 发器 将被 触 发 。 则
单 从 字 面 意 思 上 来 看 , re是 合 并 、 并 的 意 思 , 名 思 义 , Meg 兼 顾 Meg no 的用 途 就 是 对 目标 表 进 行 匹 配 , 根 据 是 否 匹 配 条 件 进 re I t 并 行 分别 处理 , 主 要 用 来 合 并 U d t 它 p ae和 I e 语 句 , n r st 即用 一 个 表 中 的数 据 来 修 改 或插 入 到另 一个 表 中 。通 过 Meg no语 句 , 们 能 re It 我 够 在 ~ 个 语 句 中 对 一 个 表 同 时执 行 Is r 和 Up ae操 作 ,根 据 这 n et dt 个 表 或 子查 询 的连 接 条件 对另 外 一张 表 进 行 查 询 ,连 接条 件 匹配 上 的进 行 U d t p ae操 作 , 且 在 其 后 面 还 可接 删 除 操作 , 法 匹配 的执 并 无
1 Meg no语 句 在 Orce中的 用 途 re It al
Me g no语 句 是 Orce从 9 开 始 新增 的一 种 语 法 , Or — r e It al i 是 a
ce中 的 一 个 非 常 有 用 的功 能 , 它 类 似 干 My Q 中 的 is r i o l S L n et n t
浅 谈 Orce数 据 库 中 Meg no的 用 法 al re It
曹国强 ( 省楚 云南 雄师范学院)
摘 要 : re It Meg no语 句是 Orce从 9 开 始 新 增 的一 种 语 法 , Orce 表 、 图 或 者 一 个 子 查询 语 句 。 al j 是 a l 视 中的一个非常有用的功能, 主要用来合并 u dt 它 p ae和 is r 句 , 用 一 个 n et语 即 ⑧0 n子句 : 指定执行插 入或者修 改的满足条件。在
Me g no来 实现 用 B表 来 更 新 A 表 中 的 数 据 , 果 A 表 中 没 有 , 0 B re It 如 贝把 表 的 数据 插 入 A 表 。 使 用 DB 在 MS过 程 中 , 们 总是 难 以 避免 的遇 到 像这 样 我 的 需 求 , 果 不 使 用 Meg It 如 re no语 句 , 们 将 不 得 不 在 程 序 中增 加 大 段 的 我
m . or = tsc e sc e . or
ME GE I T [o rtb — a 】I n me y u a l h r] R N O y u a l n me r a o rtbe ee e e
u d t e p ae s t
m . or sc e1 = ts .cor e1,
2 Meg no的语 法和 基 本 操 作 re I t
2. 语 法 1
m . c r 2 = ts o e s oe .c r 2, m .c r 3 = t c r 3, s oe . oe s
分 调 整 , 在 要 把 调 整 后 的成 绩 更 新 到 原 数 据 表 中 , 设 调 整 后 的数 现 假
据保存在表 t mp s oe 原 数 据 保 存 在 表 my s oe 则 程 序 可 写成 : c r, c r,

m eg no my s oe m re it _ c r u ig t p c r sn m _s o e t
目标表 中符
表 中 的数 据 来 修 改 或插 入 到 另 一 个表 中 , 是 u d t 是 is r 主 要 依 据 于 合 条 件 的每 一 行 ,rce用数 据 源 中 的相 应 数 据 修 改 这 些 行 。 p ae还 ne t oa l 对于 不 所 指 定 的 条件 判 断 的 , 的主 要 原 则 是 “ 则 更 新 , 则 插 入 ” 比如 说 要 用 满 足 条件 的那 些行 ,rc 它 有 无 , oa l 插入 数据 源 中相 应 数 据 。 e则
代码, 样实现起来不仅费时麻烦而且容易出错。 这 关键 词 : 途 用 语法 操作 改 进
@whn ma hd l o ma hd子句 : e t e nt t e c c 通知 oal r e如何 对满 c
足 或 不 满足 条 件 的结 果 做 出相 应 的操 作 。 以使 用 以下 的两 类 子 句 。 可
 ̄meg — p ae子句 : re u d t 执行对 目标表中的字段值修 改。当在符
合 o n子 句 条件 的 情 况下 执 行 。如 果修 改子 句 执 行 , 目标 表 上 的修 则 改 触 发器 将 被 触 发。 限制 : 当修 改 一 个 视 图 时 , 能指 定 一 个 d fut 。 不 ea l值
合集下载

Oracle中使用MergeInto去除数据库重复记录

Oracle中使用MergeInto去除数据库重复记录

Oracle中使⽤MergeInto去除数据库重复记录Oracle中的Merge Into在数据库可以替代update/insert使⽤,同时具有⼆者功能,在数据库中没有对应记录时,插⼊记录;数据库中有对应记录时,更新记录。

语法:MERGE INTO table_name alias1USING (table|view|sub_query) alias2ON (join condition)WHEN MATCHED THENUPDATE table_nameSET col1 = col_val1,col2 = col_val2WHEN NOT MATCHED THENINSERT (column_list) VALUES (column_values);应⽤:1、当数据库中已经存在数据时,覆盖数据库中记录,即完全拿最新的数据替换数据库中已有数据。

MERGE INTO D_MESSAGE_FLOOD T1USING (select'14' id from dual) T2ON ( T1.id=T2.id)WHEN MATCHED THENUPDATE set T1.dr_2='dr_2',T1.dd='dd'WHEN NOT MATCHED THENINSERT (id) VALUES('14');2、当数据库中已存在数据时,向数据库中追加记录,即只更新此条记录中为空的字段,不为空的字段保留MERGE INTO D_MESSAGE_FLOOD T1USING (select'14' id from dual) T2ON ( T1.id=T2.id)WHEN MATCHED THENUPDATE SET T1.dr_2 = (case when T1.dr_2 is null or T1.dr_2=''then'dr_2' else T1.dr_2 end),T1.dd = (case when T1.dd is null or T1.dd=''then'dd 'else T1.dd end)WHEN NOT MATCHED THENINSERT (id) VALUES('14');3、当数据库中已存在数据时,丢弃最新记录,保留数据库中原有记录。

Oracle中mergeinto的用法

Oracle中mergeinto的用法

Oracle中mergeinto的⽤法Oracle 中 merge into 的⽤法merge into 的⽤法对⼀张表,在不同的条件下实现不同的操作(update/insert),在 oracle 中可以⽤ merge into语法:MERGE INTO table_name alias1USING (table|view|sub_query) alias2(join condition)WHEN MATCHED THENUPDATE table_nameSET col1 = col_val1,col2 = col_val2WHEN NOT MATCHED THENINSERT (column_list) VALUES (column_values);要对表中某⼏条记录进⾏判断并操作,代码实现如下:-- user_table 表中,如果存在 user_skey = 99999 的记录,则修改该记录的 last_name 字段,否则插⼊⼀条新纪录merge into user_table t1 using (select 99999 as user_skey2, 9999 as user_id2 from dual) t2 on (er_skey = er_skey2) when matched thenupdate set st_name = '宝强'when not matched theninsert (er_skey , er_id, last_name, first_name, ba_no , dept_id) values (1111,222, '俊杰', '林', 111 ,10)注:update 和 insert 的记录总和与 using 后⾯的集合中的元素个数⼀致对表中全部记录进⾏操作,代码实现如下:-- user_table 表中,如果存在 user_skey = 11111 的记录,则修改所有记录的 last_name 字段,否则插⼊⼀条新的记录merge into user_table t1 using dual on ((select count(*) from user_table where user_skey = 11111) > 0)when matched thenupdate set st_name = '杰伦'when not matched theninsert (er_skey , er_id, last_name, first_name, ba_no , dept_id) values (1112,222, '俊杰', '林', 111 ,10)注:update 的记录条数与 count 的值⼀致。

oracle merge into 用法详解

oracle merge into 用法详解

2 FROM products;
PRODUCT_ID PRODUCT_NAME CATEGORY
---------- -------------------- ----------
1501 VIVITAR 35MM ELECTRNCS
SQL> MERGE INTO products p
2 USING newproducts np
3 ON (p.product_id = np.product_id)
4 WHEN MATCHED THEN
5 UPDATE
6 SET p.product_name = np.product_name,
下面例子验证DELETE子句. 我们从表NEWPRODUCTS中合并行到表PRODUCTS中, 但删除category为ELECTRNCS的行.
SQL> MERGE INTO products p
2 USING newproducts np
3 ON (1=0)
4 WHEN NOT MATCHED THEN
5 INSERT
6 VALUES (np.product_id, np.product_name, np.category)
2、UPDATE和INSERT子句可以加WHERE子句
3、ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表
4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行
首先创建示例表:
create table PRODUCTS
(
12 WHERE np.category != 'BOOKS'
SQL> /

oracle中的mergeinto用法解析

oracle中的mergeinto用法解析

oracle中的mergeinto⽤法解析oracle中的merge into⽤法解析merge into的形式 MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...) WHEN MATCHED THEN [UPDATE sql] WHEN NOT MATCHED THEN [INSERT sql] 作⽤:判断B表和A表是否满⾜on条件,如果满⾜则⽤B表去更新A表,如果不满⾜,则将B表数据插⼊A表,但有很多可选项。

例如: 1:正常模式 2:只update或者只insert 3:带条件的update或带条件的insert 4:全插⼊insert实现 5:带delete的update -------------------不做讲解⼀:正常模式 例如: MERGE INTO A_MERGE A USING (select B.AID,,B.YEAR from B_MERGE B) C ON (A.id=C.AID) WHEN MATCHED THEN UPDATE SET A.YEAR=C.YEAR WHEN NOT MATCHED THEN INSERT(A.ID,,A.YEAR) VALUES(C.AID,,C.YEAR); commit; 解析: 1:被更新的表写在MEGER INTO之后 2:更新来源数据表写在USING之后,并将相关字段查询出来,为查询结果定义别名 3:ON之后表⽰更新满⾜的条件 4:WHEN MATCHED THEN:表⽰当满⾜条件时要执⾏的操作。

5:UPDATE SET 被更新表.被更新字段 = 更新表.更新字段---此更新语句不同于常规更新语句 6:WHEN NOT MATCHED THEN:表⽰当不满⾜条件时要执⾏的操作。

7:INSERT (被更新表.被更新字段,...) VALUES(更新表.更新字段,...)。

Oracle数据库中Merge Into用法论文

Oracle数据库中Merge Into用法论文

浅谈Oracle数据库中Merge Into的用法摘要:merge into语句是oracle从9i开始新增的一种语法,是oracle中的一个非常有用的功能,它主要用来合并update和insert语句,即用一个表中的数据来修改或插入到另一个表中,是update还是insert主要依据于所指定的条件判断的,它的主要原则是“有则更新,无则插入”,比如说要用merge into来实现用b 表来更新a表中的数据,如果a表中没有,则把b表的数据插入a 表。

在使用dbms过程中,我们总是难以避免的遇到像这样的需求,如果不使用merge into语句,我们将不得不在程序中增加大段的代码,这样实现起来不仅费时麻烦而且容易出错。

关键词:用途语法操作改进1 merge into语句在oracle中的用途merge into语句是oracle从9i开始新增的一种语法,是oracle 中的一个非常有用的功能,它类似于mysql中的insert into on duplicate key。

单从字面意思上来看,merge是合并、兼并的意思,顾名思义,merge into的用途就是对目标表进行匹配,并根据是否匹配条件进行分别处理,它主要用来合并update和insert语句,即用一个表中的数据来修改或插入到另一个表中。

通过merge into语句,我们能够在一个语句中对一个表同时执行insert和update操作,根据这个表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行update操作,并且在其后面还可接删除操作,无法匹配的执行insert,它能减少执行多条insert和update语句,且插入或者修改的操作取决于on子句的条件。

这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于insert+update。

2 merge into的语法和基本操作2.1 语法merge into [your table-name] [rename your table here] using ([write your query here])[rename your query-sql and using just like a table]on ([conditional expression here] and [...]...)when mathed then [here you can execute some update sql or something else ]when not mathed then [execute something else here ! ] 其中:①into子句:指定所要修改或者插入数据的目标表②using子句:指定用来修改或者插入的数据源。

oracle中merge into的用法

oracle中merge into的用法

oracle中merge into的用法Oracle数据库中的MERGE INTO语句是一种强大的SQL操作,用于将数据从源表合并到目标表中。

它可以根据指定的条件在目标表中更新现有行,或者在条件不满足时插入新的行。

本文将一步一步回答您关于Oracle中MERGE INTO用法的问题。

一、MERGE INTO语句的基本语法MERGE INTO target_tableUSING source_tableON (condition)WHEN MATCHED THENUPDATE SET column1 = source_column1, column2 =source_column2...WHEN NOT MATCHED THENINSERT (column1, column2...) VALUES (source_column1,source_column2...);1. target_table:目标表,即要将数据合并到的表。

2. source_table:源表,即要从中获取数据的表。

3. condition:合并条件,用于指定在源表和目标表之间进行匹配的列或表达式。

4. UPDATE SET:当源表和目标表匹配时,指定要更新的列和相应的源列。

5. INSERT:当源表和目标表没有匹配时,指定要插入到目标表中的列和相应的源列值。

二、MERGE INTO语句的执行过程1. 源表和目标表数据的准备首先,需要准备好源表和目标表中的数据。

源表和目标表的结构必须一致,包括列的名称和数据类型。

2. 执行MERGE INTO语句执行MERGE INTO语句时,Oracle数据库会按照以下顺序执行不同的操作:a. 使用源表的数据和合并条件在源表和目标表之间进行匹配。

对于匹配的行,执行UPDATE SET语句更新目标表中的相应列。

b. 对于不匹配的行,执行INSERT语句将源表中的数据插入到目标表中。

3. 处理冲突如果存在冲突,例如源表和目标表中有相同的主键或唯一约束,MERGE INTO语句将根据设置的冲突解决规则进行处理。

oracle merge into delete语法

oracle merge into delete语法oracle merge into delete语法是指在oracle数据库中使用merge into和delete语句实现多表联合查询,以实现删除操作的一种语法。

这种语法是将merge into和delete两条语句结合起来使用,即通过merge into先定位出要删除的行,然后再通过delete将定位出来的行从表中删除。

Merge into delete语法可以很好地解决oracle数据库中不能使用联合查询语句实现删除操作的问题,也可以有效避免因删除数据时所引发的大量的行锁或者死锁的情况,从而减少数据库的性能损耗。

Merge into delete语法的具体使用方法如下:1. 首先,需要通过merge into语句定位出要删除的行,例如:MERGE INTO table_name t1 USING (SELECT name, age FROM other_table) t2 ON ( = AND t1.age = t2.age) WHEN MATCHED THEN DELETE;2. 然后,通过delete语句将定位出来的行从表中删除,例如:DELETE FROM table_name WHERE name = ‘xxx’ AND age = xx;3. 最后,在事务结束后,执行commit操作,将删除操作提交到数据库,例如:COMMIT;使用oracle merge into delete语法删除数据时,需要特别注意对于merge into和delete语句的正确使用,否则,会导致删除操作没有预期的结果。

例如,如果忘记加上delete语句,则可能会导致在merge into语句执行完毕后,数据表中并没有执行任何删除操作。

此外,在使用merge into delete语法删除数据之前,最好先执行select语句,把要删除的数据行显示出来,以便查看它们是否符合预期,以免删除错误的数据行。

oracle中merge into用法

oracle中merge into用法Oracle中的Merge语句是一种非常强大的数据操作语句,它可以用于将两个数据表合并成一个新表,同时还可以对目标表进行更新和插入操作。

在实际的数据处理中,Merge语句可以大大简化我们的操作流程,提高数据处理的效率和准确性。

本文将详细介绍Oracle中Merge语句的用法和注意事项。

一、Merge语句的基本语法Oracle中的Merge语句的基本语法如下:MERGE INTO 目标表 USING 源表 ON (条件) WHEN MATCHED THEN UPDATE SET 目标列=源列 WHEN NOT MATCHED THEN INSERT (列名) VALUES (值);其中,“目标表”是我们要合并数据的目标表,“源表”是我们要从中获取数据的源表。

ON子句是用来指定用于匹配目标表和源表的条件,当目标表和源表匹配时,我们可以更新目标表中的数据;当目标表中没有匹配的数据时,我们可以将源表中的数据插入到目标表中。

二、Merge语句的使用方法下面我们通过一个实例来介绍Oracle中Merge语句的使用方法。

假设我们有两个数据表,一个是员工信息表“EMP_INFO”,另一个是员工考勤表“EMP_ATTENDANCE”。

员工信息表中包含员工的基本信息,如员工编号、姓名、性别、职位等;员工考勤表中包含员工的考勤信息,如考勤日期、上班时间、下班时间等。

现在我们要将这两个表中的数据合并到一个新表“EMP_TOTAL”中,并且要求在合并的过程中对新表中的数据进行更新和插入操作。

1.创建数据表首先我们需要创建员工信息表、员工考勤表和新表EMP_TOTAL。

创建表的SQL语句如下:CREATE TABLE EMP_INFO (EMP_ID NUMBER(10), EMP_NAME VARCHAR2(20), EMP_GENDER VARCHAR2(10), EMP_POSITION VARCHAR2(20));CREATE TABLE EMP_ATTENDANCE (EMP_ID NUMBER(10), ATT_DATE DATE, ATT_START_TIME TIMESTAMP(6), ATT_END_TIME TIMESTAMP(6));CREATE TABLE EMP_TOTAL (EMP_ID NUMBER(10), EMP_NAME VARCHAR2(20), EMP_GENDER VARCHAR2(10), EMP_POSITION VARCHAR2(20), ATT_DATE DATE, ATT_START_TIME TIMESTAMP(6), ATT_END_TIME TIMESTAMP(6));2.插入数据接下来我们需要向员工信息表和员工考勤表中插入一些数据,以便我们进行测试。

oracle中mergeinto用法解析

oracle中mergeinto⽤法解析转⾃:/31397003/viewspace-2139948/oracle中merge into⽤法解析merge into语法:merge into [target-table] a using [source-table sql] b on([conditional expression] and [...]...)when matched then[update sql]when not matched then[insert sql]作⽤:判断B表和A表是否满⾜on中条件,如果满⾜则⽤b表去更新a表,如果不满⾜,则将b表数据插⼊a表但是有很多可选项,如下:1.正常模式2.只update或者只insert3.带条件的update或带条件的insert4.全插⼊insert实现5.带delete的update(觉得可以⽤3来实现)下⾯⼀⼀测试。

测试建以下表:create table a_merge(id number not null,name varchar2(12) not null,year number);create table b_merge(id number not null,aid number not null,name varchar2(12) not null,year number,city varchar2(12));create table c_merge(id number not null,name varchar2(12) not null,city varchar2(12) not null);commit;各表的表结构截图如下所⽰:SQL> desc a_merge名称是否为空? 类型----------------------------------------- -------- ----------------------------ID NOT NULL NUMBERNAME NOT NULL VARCHAR2(12)YEAR NUMBERSQL> desc b_merge名称是否为空? 类型----------------------------------------- -------- ----------------------------ID NOT NULL NUMBERAID NOT NULL NUMBERNAME NOT NULL VARCHAR2(12)YEAR NUMBERCITY VARCHAR2(12)SQL> desc c_merge名称是否为空? 类型----------------------------------------- -------- ----------------------------ID NOT NULL NUMBERNAME NOT NULL VARCHAR2(12)CITY NOT NULL VARCHAR2(12)1.正常模式先向a_merge和b_merge插⼊测试数据:insert into a_merge values(1,'liuwei',20);insert into a_merge values(2,'zhangbin',21);insert into a_merge values(3,'fuguo',20);commit;insert into b_merge values(1,2,'zhangbin',30,'吉林');insert into b_merge values(2,4,'yihe',33,'⿊龙江');insert into b_merge (id,aid,name,city) values(3,3,'fuguo','⼭东');commit;此时a_merge和b_merge表中数据如下:SQL> select * from a_merge;ID NAME YEAR---------- ------------ ----------1 liuwei 202 zhangbin 213 fuguo 20SQL> select * from b_merge;ID AID NAME YEAR CITY---------- ---------- ------------ ---------- ------------1 2 zhangbin 30 吉林2 4 yihe 33 ⿊龙江3 3 fuguo ⼭东然后再使⽤merge into⽤b_merge来更新a_merge中的数据:merge into a_merge a using (select b.aid,,b.year from b_merge b) c on (a.id=c.aid)when matched thenupdate set a.year=c.yearwhen not matched theninsert(a.id,,a.year) values(c.aid,,c.year);commit;此时a_merge中的表数据截图如下:SQL> select * from a_merge;ID NAME YEAR---------- ------------ ----------1 liuwei 202 zhangbin 303 fuguo4 yihe 332.只update模式⾸先向b_merge中插⼊两个数据,来为了体现出只update没有insert,必须有⼀个数据是a中已经存在的另⼀个数据时a中不存在的,插⼊数据语句如下:insert into b_merge values(4,1,'liuwei',80,'江西');insert into b_merge values(5,5,'tiantian',23,'河南');commit;此时a_merge和b_merge表数据截图如下:SQL> select * from a_merge;ID NAME YEAR---------- ------------ ----------1 liuwei 202 zhangbin 303 fuguo4 yihe 33SQL> select * from b_merge;ID AID NAME YEAR CITY---------- ---------- ------------ ---------- ------------1 2 zhangbin 30 吉林2 4 yihe 33 ⿊龙江3 3 fuguo ⼭东4 1 liuwei 80 江西5 5 tiantian 23 河南然后再次⽤b_merge来更新a_merge,但是仅仅update,没有写insert部分。

oracle数据匹配merge into的实例详解

oracle数据匹配merge into的实例详解Oracle是一种强大的关系数据库管理系统(RDBMS),它提供了多种数据操作和处理功能。

其中之一是数据匹配,用于将两个或多个表中的数据进行比较和合并。

在Oracle中,我们可以使用MERGE INTO语句来实现数据匹配和合并操作。

本文将详细介绍MERGE INTO语句的用法和实例。

1. 什么是MERGE INTO语句?MERGE INTO语句是一种用于同时执行INSERT、UPDATE和DELETE操作的SQL语句。

它可以根据指定的条件将源表中的数据合并到目标表中。

如果在目标表中找到匹配的记录,则更新该记录;如果找不到匹配的记录,则插入一条新记录;如果在目标表中存在但不在源表中的记录,则删除该记录。

这种功能使得数据匹配和更新变得非常方便和高效。

2. MERGE INTO语句的基本语法下面是MERGE INTO语句的基本语法:MERGE INTO target_tableUSING source_tableON (joining_condition)WHEN MATCHED THENUPDATE SET column1 = value1 [, column2 = value2 ...] WHEN NOT MATCHED THENINSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...]) WHEN NOT MATCHED BY SOURCE THENDELETE;其中,target_table是目标表,source_table是源表,joining_condition 是连接条件,用于指定目标表和源表之间的关联关系。

WHEN MATCHED THEN子句用于指定当找到匹配记录时要执行的更新操作,可以更新目标表的列值。

WHEN NOT MATCHED THEN子句用于指定当找不到匹配记录时要执行的插入操作,可以将源表的列值插入到目标表中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档