如何使用联接2个表

时间:2019-04-12 10:45:33

标签: sql oracle join sql-insert

我有3张桌子T1,T2,T3 表T1包含2列(键,班级/学生),列class / student包含班级和学生,例如(英语,数学,马克,汤姆..) 表T2包含2列(班级,学生),每个班级中有不止一个学生,并且此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 ;

2 个答案:

答案 0 :(得分:1)

使用显式连接而不是逗号分隔的连接,在我看来,您正在尝试以下查询

INSERT INTO T3 (A,B)    
SELECT m.class, m.student FROM T1 a
    join T1 b on  a."key"=b."key"
    join 
    T2 m on a."key"=m.student
    WHERE m.class in (select "key" from T1 where class='English') 

答案 1 :(得分:0)

尝试以下方法:

INSERT INTO T3 (A , B)    
SELECT M.class, M.student 
FROM T1 X Join T1 Y ON X.key = Y.key
Join T2 Z ON X.key = M.student
WHERE M.Class IN (SELECT key FROM T1 WHERE class ='English')