-
2021-11-21 19:36:07
一、多表的必要性与多表关联关系
1、为什么需要将数据都存储多张表:
:如果将数据都存储在一张表中,字段之间如果部署同一类信息,就会产生大量的数据冗余(重复)
2、外键(foregin key):
:用来描述多张表之间的关联关系的字段
3、表与表之间的关联关系存在三种
1对1
:外键创建在任何一张表中都是可以的
1对多
:外键创建在一方,不要创建在多方(冗余)
多对多
:外键一般是在一张独立的表中,这张表用来描述其他两张表的关联关系二、多表关联查询
如何进行多表关联查询:
1、交叉查询(cross join)
当不指定多张表的关联关系,直接进行查询时则默认全匹配,从而产生笛卡尔积现象mysql> select * from Teacher,Course;###第一种写法 +-----+--------+------+--------+------+ | TId | Tname | CId | Cname | TId | +-----+--------+------+--------+------+ | 02 | 李四 | 01 | 语文 | 02 | | 01 | 张三 | 01 | 语文 | 02 | | 02 | 李四 | 02 | 数学 | 01 | | 01 | 张三 | 02 | 数学 | 01 | +-----+--------+------+--------+------+ 4 rows in set (0.12 sec)
mysql> select * from Teacher cross join Course;###第二种写法 +-----+--------+------+--------+------+ | TId | Tname | CId | Cname | TId | +-----+--------+------+--------+------+ | 02 | 李四 | 01 | 语文 | 02 | | 01 | 张三 | 01 | 语文 | 02 | | 02 | 李四 | 02 | 数学 | 01 | | 01 | 张三 | 02 | 数学 | 01 | +-----+--------+------+--------+------+ 4 rows in set (0.00 sec)
交叉连接是数据库底层的实现方式,因此开发中一定要避免使用交叉连接,会产生笛卡尔积现象
2、内连接(inner join)
select *from 表1,表二 where 表1.字段1=表2.字段2 (声明这两张表中的字段存在外键关联关系)若还有其他外键关联关系用 and…
select *from 表1 u inner join 表2 d on(u.字段1=d.字段2) 若还有条件则用where
注意:内连接只能查询有关联关系的数据mysql> select *from student ; +-----+--------+---------------------+------+ | SId | Sname | Sage | Ssex | +-----+--------+---------------------+------+ | 01 | 赵雷 | 2021-11-01 00:00:00 | 男 | | 02 | 钱李 | 1990-12-21 00:00:00 | 男 | | 03 | 孙风 | 1990-12-20 00:00:00 | 男 | | 04 | 李云 | 1990-12-06 00:00:00 | 男 | | 05 | 周梅 | 1991-12-01 00:00:00 | 女 | | 06 | 吴兰 | 1992-01-01 00:00:00 | 女 | | 07 | 郑竹 | 1989-01-01 00:00:00 | 女 | | 08 | 张三 | 2017-12-20 00:00:00 | 女 | | 10 | NULL | 2017-12-25 00:00:00 | 女 | | 11 | 李四 | 2012-06-06 00:00:00 | 女 | | 12 | 赵六 | 2013-06-13 00:00:00 | 女 | | 13 | 孙七 | 2014-06-01 00:00:00 | 女 | +-----+--------+---------------------+------+ 12 rows in set (0.03 sec)
3、外连接
select *from 表1 left join 表2 on(表1.字段1=表2.字段2)###左外连接查询映射出join左侧这张表的所有数据 mysql> select * from Teacher ; +-----+--------+ | TId | Tname | +-----+--------+ | 01 | 张三 | | 02 | 李四 | +-----+--------+ 2 rows in set (0.01 sec) mysql> select * from Course; +------+--------+------+ | CId | Cname | TId | +------+--------+------+ | 01 | 语文 | 02 | | 02 | 数学 | 01 | +------+--------+------+ 2 rows in set (0.00 sec) mysql> select *from Teacher left join Course on(Teacher.TId=Course.TId); +-----+--------+------+--------+------+ | TId | Tname | CId | Cname | TId | +-----+--------+------+--------+------+ | 01 | 张三 | 02 | 数学 | 01 | | 02 | 李四 | 01 | 语文 | 02 | +-----+--------+------+--------+------+ 2 rows in set (0.00 sec)
select *from 表1 right join 表2 on(表1.字段1=表2.字段2)###右外连接查询映射出join右侧这张表的所有数据
mysql> select *from Teacher right join Course on(Teacher.TId=Course.T TId); +------+--------+------+--------+------+ | TId | Tname | CId | Cname | TId | +------+--------+------+--------+------+ | 02 | 李四 | 01 | 语文 | 02 | | 01 | 张三 | 02 | 数学 | 01 | +------+--------+------+--------+------+ 2 rows in set (0.00 sec)
更多相关内容 -
(Java)通过案例讲解项目中表与表之间关联的处理步骤
2020-06-12 16:17:16这里通过一个用户表和角色表关联的案例,向大家展示,项目中对于表与表之间关系的处理步骤 文章目录一、案例介绍二、用户与角色关联 一、案例介绍 (1)user 用户表: (2)role 角色表: (3)用户与角色关联的... -
MySQL - 数据库设计(表之间的 3 种关联关系)
2018-12-21 20:50:45表与表之间一般存在三种关系,即一对一,一对多,多对多关系。 下面分别就三种关系讲解数据库相关设计的思路和思考过程。 一、一对一关系 例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有的...表与表之间一般存在三种关系,即一对一,一对多,多对多关系。
下面分别就三种关系讲解数据库相关设计的思路和思考过程。
一、一对一关系
例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有的夫妻。
sql代码:
CREATE TABLE IF NOT EXISTS person( id INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(10), sex CHAR(1), husband INT, wife INT ); INSERT INTO person VALUES(1,'小花','0',3,0); INSERT INTO person VALUES(2,'小明','1',0,4); INSERT INTO person VALUES(3,'张三','1',0,1); INSERT INTO person VALUES(4,'小丽','0',2,0); INSERT INTO person VALUES(5,'王五','1',0,0);
sql代码对应的person表:
从表中可以看出,小花和张三是夫妻,小明和小丽是夫妻。通常为了查询方便,需要两个表,但实际项目中为了省空间,通常只建一个表,要实现一对一查询,可以建立两个视图(虚表)
* 有个小细节提一下,视图只是个逻辑概念,并不独立占用物理内存,它依附于数据表,对视图进行修改时相应的表数据也会盖改动 *CREATE VIEW men AS (SELECT * FROM person WHERE sex='1'); CREATE VIEW women AS (SELECT * FROM person WHERE sex='0');
men视图:
women视图:
执行查询:
方式一(原始方法)SELECT men.sname AS husband,women.sname AS wife FROM men,women WHERE men.id = women.husband AND women.id = men.wife;
方式二(连接方法)
SELECT men.sname AS husband,women.sname AS wife FROM men INNER JOIN women ON men.id = women.husband AND women.id = men.wife;
二、一对多关系
例如:一个人可以拥有多辆汽车,要求查询某个人拥有的所有车辆。
分析:这种情况其实也可以采用 一张表,但因为一个人可以拥有多辆汽车,如果采用一张表,会造成冗余信息过多。好的设计方式是,人和车辆分别单独建表,那么如何将两个表关联呢?有个巧妙的方法,在车辆的表中加个外键字段(人的编号)即可。
* (思路小结:’建两个表,一’方不动,’多’方添加一个外键字段) *sql代码:
// 建立人员表 CREATE TABLE human( id VARCHAR(12) PRIMARY KEY, sname VARCHAR(12), age INT, sex CHAR(1) ); INSERT INTO human VALUES('H001','小王',27,'1'); INSERT INTO human VALUES('H002','小明',24,'1'); INSERT INTO human VALUES('H003','张慧',28,'0'); INSERT INTO human VALUES('H004','李小燕',35,'0'); INSERT INTO human VALUES('H005','王大拿',29,'1'); INSERT INTO human VALUES('H006','周强',36,'1'); // 建立车辆信息表 CREATE TABLE car( id VARCHAR(12) PRIMARY KEY, mark VARCHAR(24), price NUMERIC(6,2), hid VARCHAR(12), CONSTRAINT fk_human FOREIGN KEY(hid) REFERENCES human(id) ); INSERT INTO car VALUES('C001','BMW',65.99,'H001'); INSERT INTO car VALUES('C002','BenZ',75.99,'H002'); INSERT INTO car VALUES('C003','Skoda',23.99,'H001'); INSERT INTO car VALUES('C004','Peugeot',20.99,'H003'); INSERT INTO car VALUES('C005','Porsche',295.99,'H004'); INSERT INTO car VALUES('C006','Honda',24.99,'H005'); INSERT INTO car VALUES('C007','Toyota',27.99,'H006'); INSERT INTO car VALUES('C008','Kia',18.99,'H002'); INSERT INTO car VALUES('C009','Bentley',309.99,'H005');
sql代码对应的人员表:
sql代码对应的车辆信息表:执行查询
SELECT human.sname AS 车主,car.mark AS 车辆 FROM human,car WHERE human.id = car.hid; SELECT human.sname AS 车主,car.mark AS 车辆 FROM human INNER JOIN car WHERE human.id = car.hid;
三、多对多关系
例如:学生选课,一个学生可以选修多门课程,每门课程可供多个学生选择。
分析:这种方式可以按照类似一对多方式建表,但冗余信息太多,好的方式是实体和关系分离并单独建表,实体表为学生表和课程表,关系表为选修表,其中关系表采用联合主键的方式(由学生表主键和课程表主键组成)建表。sql代码:
// 建立学生表 CREATE TABLE student( id VARCHAR(10) PRIMARY KEY, sname VARCHAR(12), age INT, sex CHAR(1), class VARCHAR(6) ); INSERT INTO student VALUES('S0001','王军',20,1,'c101'); INSERT INTO student VALUES('S0002','张宇',21,1,'c101'); INSERT INTO student VALUES('S0003','刘飞',22,1,'c102'); INSERT INTO student VALUES('S0004','赵燕',18,0,'c103'); INSERT INTO student VALUES('S0005','曾婷',19,0,'c103'); INSERT INTO student VALUES('S0006','周慧',21,0,'c104'); INSERT INTO student VALUES('S0007','小红',23,0,'c104'); INSERT INTO student VALUES('S0008','杨晓',18,0,'c104'); INSERT INTO student VALUES('S0009','李杰',20,1,'c105'); INSERT INTO student VALUES('S0010','张良',22,1,'c105'); // 建立课程表 CREATE TABLE course( id VARCHAR(10) PRIMARY KEY, sname VARCHAR(12), credit NUMERIC(2,1), teacher VARCHAR(12) ); INSERT INTO course VALUES('C001','Java',3.5,'李老师'); INSERT INTO course VALUES('C002','高等数学',5.0,'赵老师'); INSERT INTO course VALUES('C003','JavaScript',3.5,'王老师'); INSERT INTO course VALUES('C004','离散数学',3.5,'卜老师'); INSERT INTO course VALUES('C005','数据库',3.5,'廖老师'); INSERT INTO course VALUES('C006','操作系统',3.5,'张老师'); // 建立选修表 CREATE TABLE sc( sid VARCHAR(10), cid VARCHAR(10) ); ALTER TABLE sc ADD CONSTRAINT pk_sc PRIMARY KEY(sid,cid); ALTER TABLE sc ADD CONSTRAINT fk_student FOREIGN KEY(sid) REFERENCES student(id); ALTER TABLE sc ADD CONSTRAINT fk_course FOREIGN KEY(cid) REFERENCES course(id); INSERT INTO sc VALUES('S0001','C001'); INSERT INTO sc VALUES('S0001','C002'); INSERT INTO sc VALUES('S0001','C003'); INSERT INTO sc VALUES('S0002','C001'); INSERT INTO sc VALUES('S0002','C004'); INSERT INTO sc VALUES('S0003','C002'); INSERT INTO sc VALUES('S0003','C005'); INSERT INTO sc VALUES('S0004','C003'); INSERT INTO sc VALUES('S0005','C001'); INSERT INTO sc VALUES('S0006','C004'); INSERT INTO sc VALUES('S0007','C002'); INSERT INTO sc VALUES('S0008','C003'); INSERT INTO sc VALUES('S0009','C001'); INSERT INTO sc VALUES('S0009','C005');
sql代码对应的学生表:
sql代码对应的课程表:
sql代码对应的选课表:
执行查询:(没有选课的学生信息和无学生选的课程信息)普通方式:
SELECT * FROM student WHERE student.id NOT IN (SELECT sid FROM sc); SELECT * FROM course WHERE course.id NOT IN (SELECT cid FROM sc);
关联方式:
SELECT student.* FROM student LEFT JOIN sc ON student.id=sc.sid LEFT JOIN course ON course.id = sc.cid WHERE course.sname IS NULL; SELECT course.* FROM course LEFT JOIN sc ON course.id=sc.cid LEFT JOIN student ON student.id = sc.sid WHERE student.sname IS NULL;
转自:https://blog.csdn.net/lengjinghk/article/details/52140276
-
SQL多表关联
2021-11-22 19:05:14多张数据表之间是可以有一定的关联关系,这种关联关系可以通过外键约束实现 多表的分类: 一对一 一对多 多对多 一对一: 一张表对应一张表 适用场景举例: 人和身份证。一个人只能有一个身份证,一个身份证...多表关联:
多张数据表之间是可以有一定的关联关系,这种关联关系可以通过外键约束实现
多表的分类:
- 一对一
- 一对多
- 多对多
一对一:
一张表对应一张表
适用场景举例:
人和身份证。一个人只能有一个身份证,一个身份证只能对应一个人!
建表原则:
在
任意
一个表建立外键,去关联另外一个表的主键演示:
-- 创建Person表 CREATE TABLE person( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id name VARCHAR(20) -- 姓名 ); -- 添加数据 INSERT INTO person VALUES (NULL,'韩信'), (NULL,'李白'); -- 创建card表 CREATE TABLE card( id INT PRIMARY KEY AUTO_INCREMENT, -- 主键id number VARCHAR(50), -- 身份证号码 pid INT UNIQUE, -- 外键列 CONSTRAINT cp FOREIGN KEY (pid) REFERENCES person(id) -- 外键关联主键 ); -- 添加数据 INSERT INTO card VALUES (NULL,'12345',1),(NULL,'56789',2);
一对多:
一张表对应多张表
适用场景举例:
- 商品分类和商品。一个分类下可以有多个商品。
建表原则:
在
多
的一方,建立外键约束,来关联一的一方主键演示:
-- 创建category表 CREATE TABLE category( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10) ); -- 添加数据 INSERT INTO category VALUES (NULL,'手机数码'),(NULL,'电脑办公'); -- 创建product表 CREATE TABLE product( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(30), cid INT, CONSTRAINT pc_fk1 FOREIGN KEY (cid) REFERENCES category(id) -- 添加外键约束 ); -- 添加数据 INSERT INTO product VALUES (NULL,'华为P30',1),(NULL,'小米note3',1), (NULL,'联想电脑',2),(NULL,'苹果电脑',2);
多对多:
多张表对应多张表
适用场景举例:
学生和课程。一个学生可以选择多个课程,一个课程也可以被多个学生选择!
建表原则:
需要借助第三张表中间表,中间表至少包含两个列,这两个列作为中间表的外键,分别关联两张表的主键
演示:
-- 创建student表 CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); -- 添加数据 INSERT INTO student VALUES (NULL,'韩信'),(NULL,'干将'); -- 创建course表 CREATE TABLE course( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10) ); -- 添加数据 INSERT INTO course VALUES (NULL,'打野'),(NULL,'中路'); -- 创建中间表 CREATE TABLE stu_course( id INT PRIMARY KEY AUTO_INCREMENT, sid INT, -- 用于和student表的id进行外键关联 cid INT, -- 用于和course表的id进行外键关联 CONSTRAINT sc_fk1 FOREIGN KEY (sid) REFERENCES student(id), -- 添加外键约束 CONSTRAINT sc_fk2 FOREIGN KEY (cid) REFERENCES course(id) -- 添加外键约束 ); -- 添加数据 INSERT INTO stu_course VALUES (NULL,1,1),(NULL,1,2),(NULL,2,1),(NULL,2,2);
-
Hive中小表与大表关联(join)的性能分析
2018-06-30 11:14:07经常看到一些Hive优化的建议中说当小表与大表做关联时,把小表写在前面,这样可以使Hive的关联速度更快,提到的原因都是说因为小表可以先放到内存中,然后大表的每条记录再去内存中检测,最终完成关联查询。... -
数据表的关联关系
2022-02-24 08:55:40关联关系:mysql是一个关系型数据库,不仅可以存储数据,还可以维护数据与数据之间的关系,通过在数据表中建立外键约束 数据之间的关联关系有四种:一对一关联,一对多,多对一,多对多 一对一关联 方案一,通过... -
MYSQL中delete删除多表数据与删除关联数据
2021-01-18 18:16:06在mysql中删除数据方法有很多种,最常用的是使用delete来删除记录,下面我来介绍delete删除单条记 录与删除多表关联数据的一些简单实例。1、delete from t1 where 条件2、delete t1 from t1 where 条件3、delete t1 ... -
mysql---多表关联
2021-01-18 22:14:00左连接的语法:表A LEFT JOIN 表B ON 关联条件 (从表B中找出与表A满足关联条件的行) 右连接的语法:表A RIGHT JOIN 表B ON 关联条件 (从表A中找出与表B满足关联条件的行) 内连接的语法:表A INNER JOIN 表B ON 关联... -
sequelize如何建立关联关系表模型来实现联表查询?【多对多篇】
2022-02-25 08:23:15如何用sequelize提供的方法,实现多对多联表查询? -
ThinkPHP 关于数据库表与表之间关联的两种方法
2017-09-27 16:07:35首先是通过TK自带的视图模型进行关联 namespace Test\Model;...use Think\Model\ViewModel;...class NewsViewModel extends ViewModel { ...通过数据库中的关联也可以实现,这样控制器就只需要直接进行查询 -
干货 | Elasticsearch多表关联设计指南
2019-03-24 23:45:37Elasticsearch多表关联问题是讨论最多的问题之一,如:博客和评论的关系,用户和爱好的关系。 多表关联通常指:1对多,或者多对多。 本文以星球问题会出发点,引申出ES多表关联认知,分析了4种关联关系的适用场景... -
EXCEL如何实现两个表的相应数据关联
2021-08-02 13:57:59如图,表sheet1中的A列代表企业名称,B列代表企业地址 表sheet2中的B列需要同步更新sheet1中的企业名称 选中A中所有企业名称 单击右键,进行复制 选中sheet2中要进行粘贴的区域,单击右键,找到选择性... -
Spring Data JPA实现多表的关联查询
2020-04-05 11:56:22对象关系映射(Object relational mapping)是指通过将对象状态映射到数据库列,来开发和维护对象和关系数据库之间的关系。它能够轻松处理(执行)各种数据库操作,如插入、更新、删除等。 关系映射的注解: 注解 ... -
8. 数据库表的关联
2021-02-23 19:18:58操作系统: windows IDE: Pycharm 后端系统开发中, 数据库设计是重中之重。特别是前后端分离的系统, 后端的职责基本就是数据管理, 开发的代码...而关系型数据库,设计的一个难点就是各种表之间的关联关系 。 常见的 -
实现关联表查询
2018-09-09 18:21:33当数据库中表与表之间有关联时,在对数据库进行操作时,就不只是针对某一张表了,需要联表查询 MyBatis中如何实现联表查询 1.首先,新建两张表 班级表(class) ID:c_id 名字:c_name 老师:teacher_id 教师表... -
一张表左关联另外两张表,三表关联
2020-11-04 11:12:22三表连接经常做的都是两两之间关联,尝试了一下两张表同时关联到一张表,结果和预期想的一样,当主表t1关联第二表t2时,t2中不存在与t1的code相等的情况下为null,在t1再关联t3时,t3中不存在与t1的code相等的情况下... -
基于MybatisPlus实现多表的关联查询,实现分页,多条件查询
2020-08-20 15:15:27实现商品表,通过表内的id关联查询到供应商表的name属性 商品表 如下所示 供应商表 如下所示 新建查询测试sql 注意, 1、查询tb_goods表的全部,所以用t1.*,查询t2表的name,并用supplierName替换名称 2、使用... -
主表和附表的关联关系,普通字段就可以实现为什么还要有主键外键?之间有什么关系
2018-11-19 10:50:34主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从理论上... 外键(FK)是用于建立或加强两个表数据之间的链接的一列... -
Node.js Sequelize 模型(表)之间的关联及关系模型的操作
2019-05-05 22:41:34基于模型关系可以实现关联表之间的连接查询、更新、删除等操作。本文将通过一个示例,介绍模型的定义,创建模型关联关系,模型与关联关系同步数据库,及关系模型的增、删、改、查操作。 模型(表)之间的关联关系 ... -
关系型数据库中,表与表之间关系的理解,以及设计数据库思想总结:
2020-06-27 21:48:451.在关系型数据库中,表与表之间的关系主要有三种:(1)一对一,(2)一对多,(3)多对多 (1)一对一:两张表中的数据是一一对应的,例如--> 用户表user ------- 身份信息表 (2)一对多:一张表中的数据,在另... -
Mybatis 多对多关联表关联 如何插入关联表数据
2017-03-20 17:00:23很多时候我们会碰到这样一个需求,当前我有(用户)表和(角色)表,他们之间是多对多的关系,所以我们通常会创建一个关联表(用户_角色)表,现在我们有固定的角色,只需要添加用户即可,给用户指定角色,那我们... -
数据库表的关联关系
2020-10-26 19:48:49外键必须是另外一个表格的主键 多对多的关系是由两个一对多的关系实现的。(创建一个中间的表格就可以实现多对多的关系) 一对多表进行关联的时候我们在多的那一方...多对多表进行关联我们需要中间加一张表进行关联 ... -
数据库(三) 表与表建立联系-外键
2021-02-06 11:48:421.理解表与表之间建立关系的必要性比如我们建立了一张个人信息表,把所有人的信息都存在这张表中这张表中有老师和他们所属的部门,并且不同的部门工作也是不同的所有数据存放在一张表中的弊端1.组织结构不清晰2.浪费... -
关系型数据库表之间的联系[关系]详解
2021-04-29 20:14:12关系型数据库表之间可存在的联系/关系(relationship)有三种:一对一、一对多和多对多。 -
数据库设计(表与表之间的3种关系)
2017-11-28 13:46:34表与表之间一般存在三种关系,即一对一,一对多,多对多关系。 下面分别就三种关系讲解数据库相关设计的思路和思考过程; (1)一对一关系 例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有... -
ORACLE 两表关联更新三种方式
2021-05-07 05:14:27现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致。方式1,update常见陷阱:UPDATE T1SET T1.FMONEY = (select T2.FMONEY from t2 where T2.FNAME = T1.FNAME)执行后T1结果如下:有一行原有值,被... -
在mybatis分页查询时,主表对关联表 一对多 分页查询怎么实现
2021-10-24 21:48:15【mybatis】在mybatis分页查询时,主表对关联表 一对多 分页查询怎么实现 - Angel挤一挤 - 博客园【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON... -
MyBatis实现关联表查询
2018-09-10 03:53:22一:实现一对一关联 MyBatis如何使用关联表查询: 1.创建表和数据(我们假设创建一张教师表和班级表,假设一个老师带一个班,那么老师和班级就是一对一的关系)便之间的关系如下: 2.定义实体类 Class实体类: ... -
Spring Data JPA 二:实现多表关联分页查询
2018-09-12 15:50:18最近在对JPA的使用过程中发现对于单表的操作很是方便,但是当设计到多表联查的时候就需要有一些特殊的操作了。 ...首先定义一下各个对象之间的关系 实体 GxOrderDO :订单。 实体 GxOrderDet... -
达梦数据库(DM7)两表关联更新
2020-05-16 14:25:02UPDATE T1 SET T1.FMONEY = (select T2.FMONEY from t2 where T2.FNAME = T1.FNAME) merge into t1 using (select t2.fname,t2.fmoney from t2) t on (t.fname = t1.fname) when matched then ...