Mysql中的连接查询

Mysql中的关联查询

1.背景

当一张表中字段不能满足查询条件,需要查询另一张表的数据来补全结果时.可以使用关联查询/子查询.

2.实例

2.1 数据库中存在着两张表

  • 姓名表:user_name

    # 记录着4个用户的名称信息 SELECT * from user_name;
    uid name class
    1 yang A
    2 su A
    3 zhang A
    4 li B
  • 年龄表:user_age

    # 记录着2个用户的年龄信息. SELECT * from user_age;
    uid age class
    1 18 A
    2 19 B

放在一起是不是好看些

image-20210318210149305

2.2 当需要查询uid=1的用户名称以及年龄时,单表不满足查询结果.

SELECT * FROM user_name n INNER JOIN user_age a ON n.uid = a.uid AND n.uid = '1';

image-20210318210808752

2.3 连接查询

2.3.1 左连接

先执行左表的select得到左表的全部信息,再根据连接条件拼接上右边,确保左边的结果全部显示.

2.3.1.1 name 左连接 age(大表name,小表age)
SELECT * FROM user_name n LEFT JOIN user_age a ON n.uid = a.uid AND n.uid = '1'

image-20210318210730085

分析:

1.左连接,先在左表name执行select语句
SELECT * FROM user_name n;

image-20210318211744355

2.根据连接条件name.uid = age.uid拼接上右表age,不满足的置空.
SELECT * FROM user_name n LEFT JOIN user_age a ON n.uid = a.uid

image-20210318211932084

3.最后根据剩下的AND条件,继续过滤不满足的结果.
SELECT * FROM user_name n LEFT JOIN user_age a ON n.uid = a.uid AND n.uid = '1';

image-20210318212028563

2.3.2 小表age 左连接 大表name
SELECT * FROM user_age a LEFT JOIN user_name n ON n.uid = a.uid AND a.uid = '1';

image-20210318211212208

2.3.2 右连接

先执行右表的select得到右表的全部信息,再根据连接条件拼接上左边,确保右边的结果全部显示.

2.3.2.2 name 右连接 age
SELECT * FROM user_name n RIGHT JOIN user_age a ON n.uid = a.uid AND n.uid = '1'

image-20210318212508986

2.3.2.2 age 右连接 age
SELECT * FROM user_age a RIGHT JOIN user_name n ON n.uid = a.uid AND a.uid = '1';
image-20210318212701487

2.3.3 内连接

只显示满足关联条件的结果.

2.3.3.1 name 内连接 age
SELECT * FROM user_name n INNER JOIN user_age a ON n.uid = a.uid AND n.uid = '1';
image-20210318212821903
2.3.3.2 age 内连接 name
SELECT * FROM user_age a INNER JOIN user_name n ON n.uid = a.uid AND a.uid = '1';

image-20210318212938960


__EOF__

本文作者羊37
本文链接https://www.cnblogs.com/yang37/p/14556153.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   羊37  阅读(282)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示