多对多 - 从相关记录中获取所有记录

时间:2016-12-07 16:18:59

标签: sql oracle

这是我多对多的表格:

Table3:

ID_TABLE3
ID_TABLE1_FK
ID_TABLE2_FK
Some_Field

现在我想要的是从TABLE2 ID_TABLE1_FK TABLE3 = 3中选择所有记录。这是我的查询,它返回所有记录,但它在结尾处添加了TABLE3的所有字段 - 这是不希望的! :

SELECT * from TABLE2
JOIN TABLE3 ON TABLE3.ID_TABLE2_FK = TABLE2.ID_TABLE2
WHERE TABLE3.ID_TABLE1_FK= 3

那我错在哪里?

1 个答案:

答案 0 :(得分:3)

只需使用常规JOIN并选择您真正想要的列;

SELECT t2.* 
FROM TABLE2 t2 JOIN
     TABLE3 t3
     ON t3.ID_TABLE2_FK = t2.ID_TABLE2
WHERE t3.ID_TABLE1_FK = 3;

这可能会产生重复(如果它们在TABLE3中)。所以,你可能会更好:

SELECT t2.*
FROM TABLE2 t2
WHERE EXISTS (SELECT 1
              FROM TABLE3 t3
              WHERE t3.ID_TABLE2_FK = t2.ID_TABLE2 AND t3.ID_TABLE1_FK = 3
             );
相关问题