这是我多对多的表格:
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
那我错在哪里?
答案 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
);