使用Join查询3个表

时间:2012-02-12 09:42:12

标签: mysql sql join

我正在尝试加入3个表的所有字段。我已经尝试了近7个查询,所有查询都需要永远加载(非常慢)或抛出错误。

我需要在table1 id字段上加入所有3个表。所有表都有相应的id字段。

这是我最新的实验:(抛出重复行的错误)

SELECT * FROM 
(Select * FROM 
table1 as T1 JOIN 
table2 as T2 ON T1.dep_id=T2.dep_id WHERE 1) as T12
JOIN 
table3 as T3 ON T12.dep_id=T3.dep_id WHERE 1

3 个答案:

答案 0 :(得分:1)

尝试(根据OP的评论更新):

SELECT * FROM TABLE1 T1 LEFT OUTER JOIN TABLE2 T2 ON T1.DEP_ID = T2.DEP_ID LEFT OUTER JOIN TABLE3 T3 ON T1.DEP_ID = T3.DEP_ID

答案 1 :(得分:1)

您的列名相同会导致错误(T12.dep_id定义不明确,是否引用原始T1.dep_idT2.dep_id?)。

您可以使用USING在连接的两边合并两个具有相同名称的列,并在相等测试中连接它们。当您不希望结果集中出现重复列时,这很方便:

SELECT *
  FROM T1
  JOIN T2 USING(dep_id)
  JOIN T3 USING(dep_id)

请注意,使用以下查询,您没有名为T1.dep_idT2.dep_idT3.dep_id的列,如果您想{{{}}},则可以使用dep_id {1}}仅限该列。

根据对Yahia答案的评论:

SELECT

答案 2 :(得分:-1)

您的代码中存在一些语法错误,因为t12不存在。 其他问题是你的表的声明 对表ids耐心等待。

SELECT * FROM table1 t1,table2 t2,table3 t3 WHERE t1.dep_id=t2.id AND T2.id=T3.dep_id;