一 这里采用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 --- 去掉重复记录,执行这条语句会弹出一个合并之后的表