如何使用两个表进行SQL查询

时间:2019-04-12 14:53:18

标签: sql join oracle-sqldeveloper

我有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

enter image description here

表T1:

enter image description here

表T2:

enter image description here

2 个答案:

答案 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" />