Mysql 关联查询

六种关联查询

  • 交叉连接 ( CROSS JOIN )
  • 内连接 ( INNER JOIN )
  • 外连接 ( LEFT JOIN / RIIGHT JOIN )
  • 联合查询 ( UNION / UNION ALL )
  • 全连接 ( FULL JOIN )

关联更新:

A表(id,sex,name,c1,c2)B( id,age,c1,c2 ) 

将 B表中age字段大于50的c1 c2字段更新到 A 表

第一种方法:

update A,B set A.c1 = B.c1,A.c2 = B.c2 where A.id = B.id and B.age > 50

第二种方法

update A inner join B on A.id = B.id set A.c1 = B.c1,A.c2 = B.c2 where B.age > 50

关联查询 :

select * from A inner join B on A.id = B.id

左连接、右连接,内连接区别

  • LEFT JOIN 已左边表为主,先找到左边内容,然后匹配右边,匹配不到用NULL填充
  • 与LEFT JOIN 相反
  • inner join 不已任何表为主,只显示匹配到的内容

联合查询 union

SELECT * FROM A UNION SELECT * FROM B UNION ... 

就是把多个结果集中在一起,UNION前的结果为基准,需要注意的是联合查询的列数要相等,相同的记录会合并

UNIONALL 不会合并重复记录

嵌套查询

SELECT * FORM A WHERE id IN (SELECT id FROM B)

猜你喜欢

转载自www.cnblogs.com/xiaoliwang/p/9271669.html