Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
MySQL中join用法解析_创想鸟

MySQL中join用法解析

MySQL中join用法解析

实例数据库如下:
student表:

mysql> select * from student;+-----------+-----------+------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept |+-----------+-----------+------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    || 201215122 | 刘晨      | 女   |   19 | CS    || 201215123 | 王敏      | 女   |   18 | MA    || 201215125 | 张立      | 男   |   19 | IS    || 201215128 | 陈冬      | 男   |   18 | IS    || 201215126 | 张成民    | 男   |   18 | CS    |+-----------+-----------+------+------+-------+6 rows in set (0.00 sec)

sc表:

启科网络PHP商城系统 启科网络PHP商城系统

启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。

启科网络PHP商城系统 0 查看详情 启科网络PHP商城系统

mysql> select * from sc;+-----------+------+-------+| Sno       | Cno  | Grade |+-----------+------+-------+| 201215121 |    1 |    92 || 201215121 |    2 |    85 || 201215121 |    3 |    88 || 201215122 |    2 |    90 || 201215122 |    3 |    80 || 201215128 |    1 |    78 |+-----------+------+-------+6 rows in set (0.00 sec)

LEFT JOIN(左连接)

这里写图片描述
sql语句如下:

select * from student left join sc on student.Sno=sc.Sno;

运行结果如下:

+-----------+-----------+------+------+-------+-----------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+-----------+------+------+-------+-----------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    | 201215128 |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    |      NULL | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    |      NULL | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    |      NULL | NULL |  NULL |+-----------+-----------+------+------+-------+-----------+------+-------+

在此例中left join 是以student表中的记录为基础,student表可以看成左表,sc表可以看成右表,左表中的记录会完全显示出来,加上匹配到的右表,如果左边没有匹配到,则其余部分显示为null。

USING字句

using字句和on字句,类似,但结果略有不同。
例如:

mysql> select student.Sno,Sname,Grade from student left join sc on student.Sno=sc.Sno;+-----------+-----------+-------+| Sno       | Sname     | Grade |+-----------+-----------+-------+| 201215121 | 李勇      |    92 || 201215121 | 李勇      |    85 || 201215121 | 李勇      |    88 || 201215122 | 刘晨      |    90 || 201215122 | 刘晨      |    80 || 201215128 | 陈冬      |    78 || 201215123 | 王敏      |  NULL || 201215125 | 张立      |  NULL || 201215126 | 张成民    |  NULL |+-----------+-----------+-------+9 rows in set (0.00 sec)

以上等价于

select Sno,Sname,Grade from student left join sc using(Sno);+-----------+-----------+-------+| Sno       | Sname     | Grade |+-----------+-----------+-------+| 201215121 | 李勇      |    92 || 201215121 | 李勇      |    85 || 201215121 | 李勇      |    88 || 201215122 | 刘晨      |    90 || 201215122 | 刘晨      |    80 || 201215128 | 陈冬      |    78 || 201215123 | 王敏      |  NULL || 201215125 | 张立      |  NULL || 201215126 | 张成民    |  NULL |+-----------+-----------+-------+

不同的地方,例如:

select * from student left join sc on student.Sno=sc.Sno;+-----------+-----------+------+------+-------+-----------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+-----------+------+------+-------+-----------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    | 201215128 |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    |      NULL | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    |      NULL | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    |      NULL | NULL |  NULL |+-----------+-----------+------+------+-------+-----------+------+-------+
select * from student left join sc using (sno);+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

重复的Sno列,如果用on字句会被输出两次

RIGHT JOIN(右连接)

同LEFT JOIN,只不过以右表为基础,例如:

 select * from student right join sc using (sno);+-----------+------+-------+--------+------+------+-------+| Sno       | Cno  | Grade | Sname  | Ssex | Sage | Sdept |+-----------+------+-------+--------+------+------+-------+| 201215121 |    1 |    92 | 李勇   | 男   |   22 | CS    || 201215121 |    2 |    85 | 李勇   | 男   |   22 | CS    || 201215121 |    3 |    88 | 李勇   | 男   |   22 | CS    || 201215122 |    2 |    90 | 刘晨   | 女   |   19 | CS    || 201215122 |    3 |    80 | 刘晨   | 女   |   19 | CS    || 201215128 |    1 |    78 | 陈冬   | 男   |   18 | IS    |+-----------+------+-------+--------+------+------+-------+

INNER JOIN(相等连接或内连接)

这里写图片描述

不会显示以谁为基础,只会显示符合条件的记录

 select * from student inner join sc on student.Sno=sc.Sno;+-----------+--------+------+------+-------+-----------+------+-------+| Sno       | Sname  | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+--------+------+------+-------+-----------+------+-------+| 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬   | 男   |   18 | IS    | 201215128 |    1 |    78 |+-----------+--------+------+------+-------+-----------+------+-------+

以上语句等同于:

select * from student,sc where student.Sno=sc.Sno;+-----------+--------+------+------+-------+-----------+------+-------+| Sno       | Sname  | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+--------+------+------+-------+-----------+------+-------+| 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬   | 男   |   18 | IS    | 201215128 |    1 |    78 |+-----------+--------+------+------+-------+-----------+------+-------+

扩展

如果只想从A表中取出一些记录,但不包含B表

这里写图片描述

可以在left join 后面加上一个where语句

select * from student left join sc using(Sno) where sc.Sno is null;+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

求差集

这里写图片描述

可以结合union字句,由于本例中,右侧的已经全部对应的所以显示结果,和上一个一致。

select * from student left join sc using(Sno) where student.Sno is null union select * from student left join sc using(Sno) where sc.Sno is null;+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

FULL JOIN

这里写图片描述

 select * from student left join sc on student.Sno=sc.Sno union  select * from student right join sc on student.Sno=sc.Sno;+-----------+-----------+------+------+-------+-----------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+-----------+------+------+-------+-----------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    | 201215128 |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    |      NULL | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    |      NULL | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    |      NULL | NULL |  NULL |+-----------+-----------+------+------+-------+-----------+------+-------+

注:A left join B 等同于 B right join A

mysql> select * from student left join sc using(Sno);+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+9 rows in set (0.00 sec)mysql> select * from sc right join student using(Sno);+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

MySQL中join用法解析

实例数据库如下:
student表:

mysql> select * from student;+-----------+-----------+------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept |+-----------+-----------+------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    || 201215122 | 刘晨      | 女   |   19 | CS    || 201215123 | 王敏      | 女   |   18 | MA    || 201215125 | 张立      | 男   |   19 | IS    || 201215128 | 陈冬      | 男   |   18 | IS    || 201215126 | 张成民    | 男   |   18 | CS    |+-----------+-----------+------+------+-------+6 rows in set (0.00 sec)

sc表:

mysql> select * from sc;+-----------+------+-------+| Sno       | Cno  | Grade |+-----------+------+-------+| 201215121 |    1 |    92 || 201215121 |    2 |    85 || 201215121 |    3 |    88 || 201215122 |    2 |    90 || 201215122 |    3 |    80 || 201215128 |    1 |    78 |+-----------+------+-------+6 rows in set (0.00 sec)

LEFT JOIN(左连接)

这里写图片描述
sql语句如下:

select * from student left join sc on student.Sno=sc.Sno;

运行结果如下:

+-----------+-----------+------+------+-------+-----------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+-----------+------+------+-------+-----------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    | 201215128 |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    |      NULL | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    |      NULL | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    |      NULL | NULL |  NULL |+-----------+-----------+------+------+-------+-----------+------+-------+

在此例中left join 是以student表中的记录为基础,student表可以看成左表,sc表可以看成右表,左表中的记录会完全显示出来,加上匹配到的右表,如果左边没有匹配到,则其余部分显示为null。

USING字句

using字句和on字句,类似,但结果略有不同。
例如:

mysql> select student.Sno,Sname,Grade from student left join sc on student.Sno=sc.Sno;+-----------+-----------+-------+| Sno       | Sname     | Grade |+-----------+-----------+-------+| 201215121 | 李勇      |    92 || 201215121 | 李勇      |    85 || 201215121 | 李勇      |    88 || 201215122 | 刘晨      |    90 || 201215122 | 刘晨      |    80 || 201215128 | 陈冬      |    78 || 201215123 | 王敏      |  NULL || 201215125 | 张立      |  NULL || 201215126 | 张成民    |  NULL |+-----------+-----------+-------+9 rows in set (0.00 sec)

以上等价于

select Sno,Sname,Grade from student left join sc using(Sno);+-----------+-----------+-------+| Sno       | Sname     | Grade |+-----------+-----------+-------+| 201215121 | 李勇      |    92 || 201215121 | 李勇      |    85 || 201215121 | 李勇      |    88 || 201215122 | 刘晨      |    90 || 201215122 | 刘晨      |    80 || 201215128 | 陈冬      |    78 || 201215123 | 王敏      |  NULL || 201215125 | 张立      |  NULL || 201215126 | 张成民    |  NULL |+-----------+-----------+-------+

不同的地方,例如:

select * from student left join sc on student.Sno=sc.Sno;+-----------+-----------+------+------+-------+-----------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+-----------+------+------+-------+-----------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    | 201215128 |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    |      NULL | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    |      NULL | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    |      NULL | NULL |  NULL |+-----------+-----------+------+------+-------+-----------+------+-------+
select * from student left join sc using (sno);+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

重复的Sno列,如果用on字句会被输出两次

RIGHT JOIN(右连接)

同LEFT JOIN,只不过以右表为基础,例如:

 select * from student right join sc using (sno);+-----------+------+-------+--------+------+------+-------+| Sno       | Cno  | Grade | Sname  | Ssex | Sage | Sdept |+-----------+------+-------+--------+------+------+-------+| 201215121 |    1 |    92 | 李勇   | 男   |   22 | CS    || 201215121 |    2 |    85 | 李勇   | 男   |   22 | CS    || 201215121 |    3 |    88 | 李勇   | 男   |   22 | CS    || 201215122 |    2 |    90 | 刘晨   | 女   |   19 | CS    || 201215122 |    3 |    80 | 刘晨   | 女   |   19 | CS    || 201215128 |    1 |    78 | 陈冬   | 男   |   18 | IS    |+-----------+------+-------+--------+------+------+-------+

INNER JOIN(相等连接或内连接)

这里写图片描述

不会显示以谁为基础,只会显示符合条件的记录

 select * from student inner join sc on student.Sno=sc.Sno;+-----------+--------+------+------+-------+-----------+------+-------+| Sno       | Sname  | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+--------+------+------+-------+-----------+------+-------+| 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬   | 男   |   18 | IS    | 201215128 |    1 |    78 |+-----------+--------+------+------+-------+-----------+------+-------+

以上语句等同于:

select * from student,sc where student.Sno=sc.Sno;+-----------+--------+------+------+-------+-----------+------+-------+| Sno       | Sname  | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+--------+------+------+-------+-----------+------+-------+| 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇   | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨   | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬   | 男   |   18 | IS    | 201215128 |    1 |    78 |+-----------+--------+------+------+-------+-----------+------+-------+

扩展

如果只想从A表中取出一些记录,但不包含B表

这里写图片描述

可以在left join 后面加上一个where语句

select * from student left join sc using(Sno) where sc.Sno is null;+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

求差集

这里写图片描述

可以结合union字句,由于本例中,右侧的已经全部对应的所以显示结果,和上一个一致。

select * from student left join sc using(Sno) where student.Sno is null union select * from student left join sc using(Sno) where sc.Sno is null;+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

FULL JOIN

这里写图片描述

 select * from student left join sc on student.Sno=sc.Sno union  select * from student right join sc on student.Sno=sc.Sno;+-----------+-----------+------+------+-------+-----------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Sno       | Cno  | Grade |+-----------+-----------+------+------+-------+-----------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    | 201215121 |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    | 201215122 |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    | 201215128 |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    |      NULL | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    |      NULL | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    |      NULL | NULL |  NULL |+-----------+-----------+------+------+-------+-----------+------+-------+

注:A left join B 等同于 B right join A

mysql> select * from student left join sc using(Sno);+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+9 rows in set (0.00 sec)mysql> select * from sc right join student using(Sno);+-----------+-----------+------+------+-------+------+-------+| Sno       | Sname     | Ssex | Sage | Sdept | Cno  | Grade |+-----------+-----------+------+------+-------+------+-------+| 201215121 | 李勇      | 男   |   22 | CS    |    1 |    92 || 201215121 | 李勇      | 男   |   22 | CS    |    2 |    85 || 201215121 | 李勇      | 男   |   22 | CS    |    3 |    88 || 201215122 | 刘晨      | 女   |   19 | CS    |    2 |    90 || 201215122 | 刘晨      | 女   |   19 | CS    |    3 |    80 || 201215128 | 陈冬      | 男   |   18 | IS    |    1 |    78 || 201215123 | 王敏      | 女   |   18 | MA    | NULL |  NULL || 201215125 | 张立      | 男   |   19 | IS    | NULL |  NULL || 201215126 | 张成民    | 男   |   18 | CS    | NULL |  NULL |+-----------+-----------+------+------+-------+------+-------+

 以上就是MySQL中join用法解析的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/800716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
圆通快递官网查询入口 圆通物流包裹运输详情
上一篇 2025年11月26日 17:55:34
邮箱密码忘记如何处理 邮箱密码找回的简单方法
下一篇 2025年11月26日 17:56:19

相关推荐

  • 使用本地HTML文件运行JavaScript脚本失败的原因及解决方案

    本文旨在帮助开发者理解在没有Web服务器的情况下,直接通过浏览器打开本地HTML文件时,JavaScript脚本可能无法正常运行的原因,并提供相应的解决方案。文章将深入探讨浏览器安全策略、相对路径问题以及如何正确引入和执行JavaScript脚本,确保你的HTML、CSS和JavaScript代码能…

    2026年9月21日
    000
  • PHP一键环境如何配置URL重写_URL Rewrite规则设置

    开启Apache的mod_rewrite模块并配置AllowOverride All,再在.htaccess中添加重写规则,即可实现URL重写,使URL更简洁利于SEO。 在使用PHP一键环境(如XAMPP、WAMP、phpStudy等)时,开启URL重写(URL Rewrite)功能可以让网站的U…

    2026年9月21日
    100
  • MySQL常见错误码代表什么_如何快速定位问题?

    MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?

    遇到mysql错误码应先明确错误类型再逐步排查。error 1045表示用户名、密码或访问权限问题,需检查拼写、ip限制和远程访问权限;error 2003表示连接失败,需依次检查服务器状态、mysql服务运行情况、防火墙设置及bind-address配置;error 1054表示sql语句中引用了…

    2026年9月21日 用户投稿
    100
  • 解决WordPress wp-settings.php中致命错误的实用指南

    当WordPress网站遭遇wp-settings.php中Call to undefined function的致命错误时,通常意味着核心文件已损坏。本教程将指导您通过下载全新WordPress副本并替换站点中wp-admin和wp-includes目录来有效解决此问题,确保网站恢复正常运行,并提…

    2026年9月21日
    000
  • 1688阿里巴巴官网网址 1688阿里巴巴批发商城入口

    1688阿里巴巴官网网址是https://www.1688.com,该平台商品种类丰富,涵盖工业品与消费品,支持行业分类查找、厂家直供和热门榜单更新。 1688阿里巴巴官网网址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来1688阿里巴巴批发商城入口,感兴趣的网友一起随小编来瞧瞧吧! h…

    2026年9月21日
    000
  • 如何从被调用类中获取调用者文件的命名空间

    本文探讨了在PHP中,如何在不通过参数传递的情况下,从一个被调用的工具类中获取到调用该方法的文件的命名空间。通过结合使用`debug_backtrace()`回溯调用栈以定位调用者文件,并利用`token_get_all()`解析文件内容来提取命名空间声明,提供了一种实用的解决方案。文章详细介绍了实…

    2026年9月21日
    000
  • 悟空浏览器开发者工具的控制台怎么用_悟空浏览器Console控制台使用入门教程

    首先启用悟空浏览器开发者工具并进入Console标签,可查看错误、警告等日志信息,通过过滤功能定位问题;支持执行JavaScript代码实时调试,监控网络请求失败及全局异常,还可清空或保存日志以便分析。 如果您在使用悟空浏览器进行网页开发或调试时,发现页面元素未按预期工作或脚本报错,则可以借助开发者…

    2026年9月21日
    700
  • MySQL如何实现数据的实时备份_有哪些高效工具和方法?

    mysql 实时备份主要依赖主从复制、二进制日志(binlog)配合增量备份,以及借助专业工具实现自动化监控与恢复。一、主从复制通过将主库数据变更同步到从库实现“准实时”备份,但存在延迟风险,建议开启 gtid 模式提升一致性;二、结合 binlog 与定时归档实现可回溯的增量备份,配合全量备份可恢…

    2026年9月21日
    000
  • SpringBoot的定时任务

    SpringBoot的定时任务SpringBoot的定时任务SpringBoot的定时任务SpringBoot的定时任务

    大家好,我是你们的老朋友全栈君。我们又见面了。 一、基于注解(@Scheduled)的定时任务 使用SpringBoot的@Scheduled注解来创建定时任务非常简单,只需几行代码就能实现。然而,@Scheduled默认是单线程运行,这意味着当启动多个任务时,一个任务的执行时间可能会影响到下一个任…

    2026年9月21日 用户投稿
    400
  • 百度网盘官方网页登录 百度网盘网页版入口快捷

    百度网盘官方网页登录入口是https://pan.baidu.com,用户可直接访问该网址登录账号,主界面布局清晰,支持文件上传下载、智能检索、跨设备同步及在线预览等功能。 百度网盘官方网页登录入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来百度网盘网页版入口快捷方式,感兴趣的网友一起…

    2026年9月21日
    100
  • 实现搜索结果的 A-Z 排序:PHP 教程

    本文档旨在指导开发者如何在 PHP 中实现搜索结果的 A-Z 排序功能。通过结合 AJAX 技术和 PHP 函数,可以方便地对通过 POST 方法获取的医生搜索结果进行 A-Z 排序,从而优化用户浏览体验。本文将详细介绍实现步骤,提供可复用的代码示例,并着重强调注意事项,旨在帮助开发者快速掌握并应用…

    2026年9月21日
    000
  • MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南

    MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南

    mysql原生全文搜索功能存在明显局限,需结合外部搜索引擎才能满足复杂需求。1. mysql全文搜索适用于小数据量、简单查询场景,但分词能力弱,尤其对中文支持差,查询功能有限,无法实现模糊查询、纠错等高级功能,且性能随数据量增长显著下降。2. 外部搜索引擎如elasticsearch(es)和sph…

    2026年9月21日 用户投稿
    000
  • MySQL慢查询到底是什么_怎样快速定位并修复它?

    MySQL慢查询到底是什么_怎样快速定位并修复它?MySQL慢查询到底是什么_怎样快速定位并修复它?MySQL慢查询到底是什么_怎样快速定位并修复它?MySQL慢查询到底是什么_怎样快速定位并修复它?

    mysql慢查询可通过开启日志、分析日志和针对性优化快速定位修复。具体步骤:1. 修改配置文件或使用命令开启慢查询日志并设置阈值;2. 利用mysqldumpslow或pt-query-digest工具分析日志内容,找出耗时sql;3. 针对常见原因如缺少索引、sql写法不合理、数据量过大、锁竞争及…

    2026年9月21日 用户投稿
    000
  • PHPComposer怎么安装_PHPComposer依赖管理工具安装与使用指南

    PHPComposer是PHP的依赖管理工具,类似npm或pip。需先安装PHP,再下载并验证composer-setup.php,执行安装生成composer.phar,推荐全局安装至/usr/local/bin/composer,运行composer –version验证。使用com…

    2026年9月21日
    000
  • MySQL如何处理长时间运行的查询_避免数据库阻塞?

    MySQL如何处理长时间运行的查询_避免数据库阻塞?MySQL如何处理长时间运行的查询_避免数据库阻塞?MySQL如何处理长时间运行的查询_避免数据库阻塞?MySQL如何处理长时间运行的查询_避免数据库阻塞?

    诊断mysql慢查询需1.开启慢查询日志并设置long_query_time;2.使用explain分析sql执行情况;3.借助工具如pt-query-digest分析日志。优化涉及1.确保join字段有索引;2.优化join顺序及减少join表数;3.使用临时表、批量处理和数据分区。防止阻塞应1.…

    2026年9月21日 用户投稿
    000
  • tiktok网络使用链接 tiktok网页版入口地址

    TikTok网页版入口地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来TikTok网页版入口地址,感兴趣的网友一起随小编来瞧瞧吧! https://www.tiktok.com 1、提供多样化的短视频内容,涵盖生活记录、才艺展示等多个领域。 2、界面设计简洁直观,用户可以快速上手并流畅…

    2026年9月21日
    200
  • PHP/MySQL:高效合并订单商品并按日期分组显示

    本教程将指导如何在PHP/MySQL应用中,将同一日期的订单商品合并显示在同一行,以提高数据展示的清晰度。核心解决方案是利用MySQL的GROUP_CONCAT函数在数据库层面进行高效聚合,避免复杂的PHP逻辑处理,从而简化代码并优化性能。 订单数据展示的常见挑战 在开发在线购物平台时,通常需要向用…

    2026年9月21日
    100
  • MySQL数据库如何支持多租户业务_设计策略与实现?

    MySQL数据库如何支持多租户业务_设计策略与实现?MySQL数据库如何支持多租户业务_设计策略与实现?MySQL数据库如何支持多租户业务_设计策略与实现?MySQL数据库如何支持多租户业务_设计策略与实现?

    mysql 支持多租户架构的关键在于选择合适的数据隔离策略,并兼顾性能与运维管理。1. 常见方式包括共享数据库共享表(资源利用率高但隔离性差)、共享数据库独立表(平衡隔离性与维护成本)和独立数据库(隔离性强但管理复杂)。2. 租户识别需在请求前确定租户id,并自动附加到sql查询中,可通过视图或中间…

    2026年9月21日 用户投稿
    000
  • 俄罗斯Яндекс账号登录入口 Yandex电脑版官方网站登录

    答案是https://www.yandex.com/。该网站提供搜索、地图、新闻、翻译等服务,界面简洁,支持个性化设置与账户同步,并拥有邮箱、云存储及丰富的应用生态。 1、立即进入“☞☞☞☞点击俄罗斯yandex搜索引擎入口☜☜☜☜”; 2、立即进入“☞☞☞☞点击快速获取Yandex免登录官网链接☜…

    2026年9月21日
    000
  • Xdebug性能优化:解决PHP调试器导致页面加载缓慢或超时的问题

    当Xdebug配置不当,即使未主动调试,也可能导致PHP应用页面加载缓慢或超时。本文将深入探讨Xdebug的工作原理,指导如何通过正确配置xdebug.mode、排查多配置文件冲突,并利用Xdebug日志进行诊断,从而有效解决调试器造成的性能瓶颈,确保开发环境的流畅运行。 理解Xdebug的连接机制…

    2026年9月21日
    000

发表回复

登录后才能评论
关注微信