六种关联查询
- 交叉连接 ( 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)