我有3个表T1,T2和T3。表T1包含2列(键,班级/学生)。 “班级/学生”列包含班级和学生,例如:“英语”,“数学”,“标记”,“ tom” ...表T2包含2列(班级,学生)。每个班级都有一个以上的学生,这两列使用T1中的键。在表T3中,我想将一个特定的班级及其学生插入-班级A列和学生班级B列。知道这些列使用了T1表中的键,我已经尝试过了,但是多次返回与学生相同的特定班级:
INSERT INTO T3 (A,B)
SELECT m.class, m.student
FROM T1 b,T2 m
WHERE m.class = (SELECT key FROM T1 WHERE class/student='English')
AND b.KEY = m.student;
我得到的结果:1是班级英语的id,10是学生标记的id,11是学生tom的id
表T1:
表T2:
答案 0 :(得分:1)
由于您的主表T1同时包含班级和学生的详细信息,所以我建议将其与class_student_map表T2进行两次连接以获取详细信息:
INSERT INTO T3 (A,B)
SELECT "class_master"."key", "student_master"."key"
FROM
T2 "class_student_map"
INNER JOIN
T1 "class_master"
ON
"class_master"."key" = "class_student_map"."class"
AND
"class_master"."class/student" = 'English'
INNER JOIN
T1 "student_master"
"student_master"."key" = "class_student_map"."student";
答案 1 :(得分:1)
这里您具有简单的代码,只需一个联接操作,会对性能产生积极影响:
<link rel="stylesheet" type="text/css" href="/static/css/nprogress.css" />