我正在尝试加入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
答案 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_id
或T2.dep_id
?)。
您可以使用USING
在连接的两边合并两个具有相同名称的列,并在相等测试中连接它们。当您不希望结果集中出现重复列时,这很方便:
SELECT *
FROM T1
JOIN T2 USING(dep_id)
JOIN T3 USING(dep_id)
请注意,使用以下查询,您没有名为T1.dep_id
或T2.dep_id
或T3.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;