ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL连接查询

2022-08-31 22:03:28  阅读:207  来源: 互联网

标签:name students 查询 course MySQL id tb 连接


目录

左连接

​ 左连接以tb_students_info基表,以tb_course参考表,进行查询时可以查询到基表tb_students_info参考表tb_course匹配的条件,如果基表tb_students_info参考表tb_course中没有匹配的行,那么在返回中参考表tb_course的字段均为null

select s.name, c.course_name
from tb_students_info s
         LEFT JOIN tb_course c on s.course_id = c.id
name course_name
林杨 Java
赵峰凯 MySQL
杨浩宇 Java
李俊飞 Python
赵虎 MySQL
王途峰 Go
李明 NULL

右连接

​ 右连接以tb_students_info参考表,以tb_course基表,进行查询时可以查询到参考tb_students_info基表tb_course匹配的条件,如果参考表tb_students_info基表tb_course中没有匹配的行,那么在返回中基表tb_course的字段均为null

select s.name, c.course_name
from tb_students_info s
         right join tb_course c on s.course_id = c.id
name course_name
林杨 Java
赵峰凯 MySQL
杨浩宇 Java
李俊飞 Python
赵虎 MySQL
王途峰 Go
NULL HTML

子查询

​ 子查询是最常用的查询方法,通过子查询可以实现多表查询,子查询将一个查询语句嵌套再另一个查询语句中。子查询可以在SELECTUPDATEDELETE语句中使用,而且可以进行多层嵌套。在实际开发中经常出现在WHERE语句中。

使用子查询查询在tb_students_info表tb_course表中查询学习Java课程的学生姓名。

select name
from tb_students_info
where course_id in (select id from tb_course where course_name = 'Java');

外层的SELECT查询为父查询,圆括号内SELECT查询为子查询。执行流程为:先进行子查询再进行父查询。

name
林杨
杨浩宇

这个查询条件分为两步执行,首先进行单独的查询,查询出tb_course表中课程为Java的id。

select id
from tb_course
where course_name = 'Java';
id
1

然后执行外层查询,在tb_students_info表中查询course_id等于1的学生姓名。

select name
from tb_students_info
where course_id in (1);

使用子查询来进行查询没有学习Java的学生。

select name
from tb_students_info
where course_id not in (select id from tb_course where course_name = 'Java');
name course_name
赵峰凯 MySQL
李俊飞 Python
赵虎 MySQL
王途峰 Go
李明 NULL

使用=运算符来进行查询学习Java的学生,=运算符与in等效

select name
from tb_students_info
where course_id = (select id from tb_course where course_name = 'Java');

标签:name,students,查询,course,MySQL,id,tb,连接
来源: https://www.cnblogs.com/MineLSG/p/16644647.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有