0
点赞
收藏
分享

微信扫一扫

4.DQL查询续集*【2022.1.20】

上古神龙 2022-01-20 阅读 37
sql

4.4联表查询

操作描述
inner join如果表中有一个匹配就返回
left join以left左边的表为基准,把on的所有条件作为匹配条件,不符合的右表内容都为null。
right join以right右边的表为基准,把on的所有条件作为匹配条件,不符合的左表内容都为null。

注意:
如果你使用 LEFT JOIN 来寻找在一些表中不存在的记录,你需要做下面的测试:WHERE 部分的
字段内容 IS NULL,MYSQL 在查询到一条匹配 LEFT JOIN 条件后将停止搜索更多行(在一个特定的组合键下)。

-- ***************联表查询*****************
# 1.分析需求 ,分析查询的字段来自哪些表
# 2.确定连接查询的方式(left , right , inner)
# 3.过滤条件(on....)
-- inner join ... on
SELECT s.studentNo,studentresult,studentName FROM `student` AS `s`
INNER JOIN `result` AS `r`
ON s.studentNo=r.studentNo;

-- left join ... on
SELECT s.studentNo,studentresult,studentName FROM `student` AS `s`
LEFT JOIN `result` AS `r`
ON s.studentNo=r.studentNo;

-- right join ... on
SELECT s.studentNo,studentresult,studentName FROM `student` AS `s`
RIGHT JOIN `result` AS `r`
ON s.studentNo=r.studentNo;

总结:
用什么方式连接,就以哪边为基准,结果为哪边的全部信息以及符合on条件的哪边信息。
回顾一下left join的定义,左边表会返回所有行,所以left join如果对左边表进行约束的话是不会生效的;但是,对left join的右边表添加条件的话是生效的!反之,right join 同理!

如果认为LEFT JOIN的 On后面跟的条件和写在Where后面一样,那你就错了

测试LEFTJOIN 发现,ON后面跟了好几个条件,会把左表的数据全部查询出来,所以说要到达实际的结果,请放在where后面。

如果是用JOIN(INNER JOIN),和放在WHERE后面是一样的效果。

举报

相关推荐

4.DQL查询数据

2022.1.20

使用DQL查询数据

DQL数据查询

DQL——分组查询(GROUP BY)

DQL表数据的查询

0 条评论