when not matched then insert (a.字段1,a.字段2……)values(b.字段1,b.字段2……) --目标表别称a可省略,源表别称b不可省略
时间: 2024-10-16 07:18:28 浏览: 17
实验五-SQL语句应用.docx
在SQL中,`WHEN NOT MATCHED THEN INSERT` 是一个常见用于全外键链接(Full Outer Join)的情况,特别是在使用 `MERGE` 或 `INSERT INTO ... SELECT` 语句时。这个语法通常用于Oracle数据库,但在其他支持这类操作的数据库系统如MySQL、SQL Server等也有相似的实现。
当你有一个源表(别称B),想要将其中的数据插入到目标表(别称A,可以省略,因为它通常是默认的)中,如果源表中的记录在目标表中找不到匹配项,则会按照指定的规则插入新行。这里的`VALUES` 子句指定了当不匹配时插入的具体值,对应的是目标表中的列。
例如:
```sql
MERGE INTO table_a a
USING table_b b ON (a.key_column = b.key_column)
WHEN NOT MATCHED BY TARGET THEN
INSERT (a.field1, a.field2, ...) VALUES (b.field1, b.field2, ...);
```
在这个例子中,`table_b` 中所有`key_column` 没有在`table_a`中找到匹配的记录时,将会插入新的行,其`field1` 和 `field2` 的值分别来自`table_b`中的相应字段。
阅读全文