mysql多表查询1 --- 中间表
2016-05-28 18:49
459 查看
一 这里采用join的方法进行多表查询
这里有4张表
1.student学生表
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| s_id | varchar(15) | NO | PRI | NULL | |
| s_name | varchar(15) | NO | | NULL | |
| s_password | varchar(15) | NO | | NULL | |
| s_sex | varchar(4) | NO | | NULL | |
| s_age | int(11) | NO | | NULL | |
| s_term | varchar(15) | NO | MUL | NULL | |
+-------------+-------------+------+-----+---------+-------+
(1)其中s_term是学期 --- 外键
2.grade成绩表
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| g_id | varchar(20) | NO | PRI | NULL | |
| midterm | int(11) | YES | | NULL | |
| endterm | int(11) | YES | | NULL | |
| makeup | int(11) | YES | | NULL | |
| rank | varchar(4) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
3.中间表
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| study_id | varchar(15) | NO | PRI | NULL | |
| subject_id | varchar(15) | NO | MUL | NULL | |
| s_id | varchar(15) | NO | MUL | NULL | |
| g_id | varchar(15) | YES | MUL | NULL | |
+------------+-------------+------+-----+---------+-------+
(1)s_id是学生表中的主键,g_id是成绩表中的主键,
4.学期表
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| term_id | varchar(15) | NO | PRI | NULL | |
| term_name | varchar(15) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
现在我需要合并的表中的字段有学生表中的学生id,成绩表中的所有字段,这样mysql语句可以这样写:
select distinct student.s_id, grade.* from
study
join student on (student.s_id = study.s_id)
join grade on (grade.g_id = study.g_id)
where student.s_id = '1001';
其中学号是已知的,distinct --- 去掉重复记录,执行这条语句会弹出一个合并之后的表
这里有4张表
1.student学生表
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| s_id | varchar(15) | NO | PRI | NULL | |
| s_name | varchar(15) | NO | | NULL | |
| s_password | varchar(15) | NO | | NULL | |
| s_sex | varchar(4) | NO | | NULL | |
| s_age | int(11) | NO | | NULL | |
| s_term | varchar(15) | NO | MUL | NULL | |
+-------------+-------------+------+-----+---------+-------+
(1)其中s_term是学期 --- 外键
2.grade成绩表
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| g_id | varchar(20) | NO | PRI | NULL | |
| midterm | int(11) | YES | | NULL | |
| endterm | int(11) | YES | | NULL | |
| makeup | int(11) | YES | | NULL | |
| rank | varchar(4) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
3.中间表
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| study_id | varchar(15) | NO | PRI | NULL | |
| subject_id | varchar(15) | NO | MUL | NULL | |
| s_id | varchar(15) | NO | MUL | NULL | |
| g_id | varchar(15) | YES | MUL | NULL | |
+------------+-------------+------+-----+---------+-------+
(1)s_id是学生表中的主键,g_id是成绩表中的主键,
4.学期表
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| term_id | varchar(15) | NO | PRI | NULL | |
| term_name | varchar(15) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
现在我需要合并的表中的字段有学生表中的学生id,成绩表中的所有字段,这样mysql语句可以这样写:
select distinct student.s_id, grade.* from
study
join student on (student.s_id = study.s_id)
join grade on (grade.g_id = study.g_id)
where student.s_id = '1001';
其中学号是已知的,distinct --- 去掉重复记录,执行这条语句会弹出一个合并之后的表
相关文章推荐
- 利用MySQL官方源安装5.6版程序,以及降级安装后无法启动的问题 推荐
- mysql_5.6.24_winx64免安装配置
- MySQL教程
- 类型转换对 MySQL 选择索引的影响
- MySQL 索引详解(并包括了如何分析SQL语句的问题)(强烈推荐)
- mysql中index的如何使用,判断什么时候加索引(强烈推荐)
- mysql Last_SQL_Errno: 1032
- MySQL的参照完整性(多表的设计):定义外键
- MySQL存储引擎MyISAM与InnoDB的优劣
- MySQL PXC构建一个新节点只需IST传输的方法
- 链接mysql的两种方法
- MySQL内存及虚拟内存优化设置参数
- Mysql的事务隔离级别
- MySQL Replication 主从配置
- mysql常用配置详解
- mysql MHA安装搭建问题实验总结
- mysql MHA主从切换问题实验总结
- mysql查询今天、昨天、本周、本月、上一月 、今年数据
- 修改mysql的用户的密码
- mysql表名忽略大小写配置