请问MySQL中是否存在关联新增和关联删除?

据我所知,在MySQL中关联操作有2种:关联更新和关联查询

现在有两张表:A表B表
A表的字段有:id、name、sex、c1、c2
B表的字段有:id、c1、c2
A表与B表通过id进行关联

1、关联更新(把B表的c1、c2更新到A表的c1、c2)

UPDATE A,B SET A.c1=B.c1,A.c2=B.c2 where A.id=B.id;

2、关联查询

SELECT * FROM A,B WHERE A.id=B.id;

现在想问,除了上面2种关联操作以外,是否有关联新增和关联删除呢?
PS:我所指的关联操作是指一条SQL语句,并不是多条SQL语句共同执行的结果

阅读 3.9k
2 个回答

当然可以了,INSERT INTO ... SELECT ...,后面的查询可以关联多表的;

DELETE也可以带关联的(但应该是DELETE table_a FROM table_a, table_b WHERE ...),原理跟UPDATE是一样的。

=== 举个栗子 ===

假设表有三张表:

ranks (rank, username, score) // 名次(自增主键)、用户名、分数
scores (uid, score) // 用户ID(主键)、分数
users (uid, username) // 用户ID(自增主键)、用户名(唯一键)

本来ranks表是空的,对分数排名可以这么玩:

INSERT INTO ranks (username, score) SELECT username, score FROM scores LEFT JOIN users USING (uid) ORDER BY score DESC

ranks表中删除uid大于10000的排名,可以这么玩:

DELETE ranks FROM ranks LEFT JOIN users USING (username) WHERE uid > 10000

通过触发器可以实现级联删除(删除主表数据时,自动删除外键关联的其他表数据)
但不推荐使用,大部分场景删除只是在记录上打标记,不是物理删除。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题