为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL的多表联查

标签:
MySQL

如:查询stu表中年龄最大的是谁?

mysql> select * from stu where age=(select max(age) from stu);

mysql> select * from stu where age in(select max(age) from stu); --(子查询结果是多条时使用in查询)

+----+------+------+-----+----------+

| id | name | age | sex | classid |

+----+------+------+-----+----------+

| 14 | abc | 33 | w | python01 |

+----+------+------+-----+----------+

1 row in set (0.01 sec)

  1. where关联查询

已知:员工personnel表和部门department表,其中员工表中的did字段为部门表id主键关联。

查询所有员工信息,并显示所属部门名称

要求:显示字段:员工id 部门 姓名

mysql> select p.id,d.name,p.name from personnel p,department d where p.did = d.id;

+----+-----------+-----------+

| id | name | name |

+----+-----------+-----------+

| 2 | 人事部 | 李玉刚 |

| 10 | 人事部 | 阿杜 |

| 4 | 市场部 | 刘欢 |

......

  1. 连接join查询

左联:left join

右联:right join

内联:inner join

已知如下表所示,商品类别信息表(具有两层类别关系,通过pid表示,0表示一级类别)

mysql> select * from type;

+----+-----------+------+

| id | name | pid |

+----+-----------+------+

| 1 | 服装 | 0 |

| 2 | 数码 | 0 |

| 3 | 男装 | 1 |

| 4 | 手机 | 2 |

| 5 | 相机 | 2 |

| 6 | 电脑 | 2 |

| 7 | 女装 | 1 |

| 8 | 童装 | 1 |

| 9 | 食品 | 0 |

| 10 | 零食 | 9 |

| 11 | 特产 | 9 |

| 12 | 休闲装 | 1 |

+----+-----------+------+

12 rows in set (0.00 sec)

mysql> desc type;

+-------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-------+------------------+------+-----+---------+----------------+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| name | varchar(16) | NO | | NULL | |

| pid | int(10) unsigned | YES | | NULL | |

+-------+------------------+------+-----+---------+----------------+

3 rows in set (0.00 sec)

-- 查询二级类别信息,并关联出他们的父类别名称

mysql> select t1.id,t1.name,t2.name from type t1,type t2 where t1.pid!=0 and t1.pid=t2.id;

+----+-----------+--------+

| id | name | name |

+----+-----------+--------+

| 3 | 男装 | 服装 |

| 4 | 手机 | 数码 |

| 5 | 相机 | 数码 |

| 6 | 电脑 | 数码 |

| 7 | 女装 | 服装 |

| 8 | 童装 | 服装 |

| 10 | 零食 | 食品 |

| 11 | 特产 | 食品 |

| 12 | 休闲装 | 服装 |

+----+-----------+--------+

9 rows in set (0.01 sec)

--统计每个一级类别下都有多少个子类别。

mysql> select t1.id,t1.name,count(t2.id) from type t1,type t2 where t1.pid=0 and t1.id=t2.pid group by t1.id;

+----+--------+--------------+

| id | name | count(t2.id) |

+----+--------+--------------+

| 1 | 服装 | 4 |

| 2 | 数码 | 3 |

| 9 | 食品 | 2 |

+----+--------+--------------+

3 rows in set (0.00 sec)

MySQL的多表联查就讲到这里啦。



作者:妄心xyx
链接:https://www.jianshu.com/p/2e5c49855496


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消