求mysql用一个教师表中的姓名字段替换另外一个表的ID字段的SQL语句

张师傅 发布于 2013/09/28 19:16
阅读 1K+
收藏 0

现在有两个表,一个是教师表teach,两外一个是学生表stu。

teach表如下:

教师ID 教师姓名
1 吴彦祖
2 陈冠希

学生表stu如下

学生ID 教师1 教师2
1 1 2
2 2 1
3 1 2
4 2 1

能不用有个sql语句,让查出来的结果是这样:

学生ID
教师1
教师2
1 吴彦祖
陈冠希
2 陈冠希
吴彦祖
3 吴彦祖
陈冠希
4 陈冠希
吴彦祖
也就是说,用teach表里面的姓名字段,代替了stu表里面的教师id字段

以下是问题补充:

@张师傅:drop table if exists stu,teach; create table stu( id int primary key auto_increment, tea1 int, tea2 int ) ENGINE=InnoDB DEFAULT CHARSET=UTF8; create table teach( id int primary key auto_increment, name varchar(20) ) ENGINE=InnoDB DEFAULT CHARSET=UTF8; insert into stu values (1,1,2),(2,2,1),(3,1,2),(4,2,1); insert into teach values (1,'无'),(2,'有'); (2013/09/29 15:22)
加载中
1
kenping
kenping

这样行不行?

SELECT *,t.教师姓名 AS 教师姓名1,x.教师姓名 AS 教师姓名2
FROM stu AS s
LEFT JOIN teach AS t ON t.教师ID=s.教师1
LEFT JOIN teach AS x ON x.教师ID=s.教师2
0
邹德鹏
邹德鹏
SELECT*,t.教师姓名as教师姓名1,x.教师姓名as教师姓名2
2 FROMstuass
3 LEFTJOINteachAStONt.教师ID=s.教师1
4 LEFTJOINteachASxONx.教师ID=s.教师2
0
张师傅
张师傅
drop table if exists stu,teach;
create table stu(
id int primary key auto_increment,
 tea1 int,
 tea2 int
)  ENGINE=InnoDB DEFAULT CHARSET=UTF8;

create table teach(
id int primary key auto_increment,
name varchar(20)
)  ENGINE=InnoDB DEFAULT CHARSET=UTF8;

insert into stu values (1,1,2),(2,2,1),(3,1,2),(4,2,1);
insert into teach values (1,'无'),(2,'有');
答案在下面,感谢kenping,也感谢德鹏的答案
SELECT t.name AS name1,x.name AS name2
FROM stu AS s
LEFT JOIN teach AS t ON t.id=s.tea1
LEFT JOIN teach AS x ON x.id=s.tea2
返回顶部
顶部