Mysql连接查询
62b74565ef3385cebc6bc30a77a02908
1 分类
1.1 内连接(笛卡尔乘积)
INNER JOIN,INNER可以省略
a 等值连接
1 | SELECT u.username, p.name, n.money FROM s_user u, s_project p, s_invest n WHERE p.id = n.projectID AND u.id=n.uid; |
以上是SQL92语法,要会但要舍弃。
内连接之等值连接(SQL99)
1 | SELECT u.username, p.name, n.money FROM s_user u JOIN s_invest n ON u.id = n.uid JOIN s_project p ON p.id = n.projectID; |
b 非等值连接
1 | SELECT e.name, e.sal, s.grade |
c 自连接(1张表看成是2张表)
表结构及演示数据

1 | SELECT a.name AS '层级', b.name AS '父层级' |
查询结果(数据会丢失)

1.2 外连接
LEFT OUTER、RIGHT OUTER,OUTER可以省略
内连接、外连接的区别
内连接:假设A和B进行连接,使用内连接,A、B没有主副之分,凡能匹配的记录都能查询出来。
外连接:A、B中有一张是主表,一张是副表,主要查询主表数据,捎带查询副表。当副表中的数据没有和主表中的数据匹配上,副表自动模拟出null数据与之匹配。
a 左(外)连接:表示左边的表是主表。左连接有右连接的写法。
b 右(外)连接:表示右边的表是主表。右连接有左连接的写法。
示例:自连接的数据
1 | SELECT a.name AS '层级', b.name AS '父层级' |
查询结果

改写成如下右连接,可得相同结果
1 | SELECT a.name AS '层级', b.name AS '父层级' |
开发中,外连接是常用方式。主表的数据无条件的全部查询出来。
嵌套使用例子

案例:将投资表中,投资额单位为万的数值*10000写回投资表
1 | UPDATE |