使用唯一数据加入SQL表(列数不同!)

时间:2014-05-19 16:39:09

标签: sql

如何连接三个或四个没有等量行的SQL表,同时确保没有主/外键的重复?

结构:

表1:id,first_name,last_name,email

表2:id(独立于表1中的id),name,location,table1_id,table2_id

表3:id,name,location

我想要表1中的所有数据,然后表2中与table1_id相对应的所有数据都没有重复。

对于一个新人来说有点棘手...

2 个答案:

答案 0 :(得分:1)

不确定你想用Table3做什么。

LEFT JOIN 会返回 LEFT 表中的所有记录以及右表中匹配的记录。如果没有匹配(从右侧),则结果为NULL。

所以每个例子:

SELECT * FROM Table1 AS t
LEFT JOIN Table2 AS tt
ON t.id = tt.id

LEFT 表引用LEFT JOIN之前的表语句, RIGHT 表引用LEFT JOIN之后的表语句。如果您还要在Table3中添加,请使用相同的逻辑:

SELECT * FROM Table1 AS t
LEFT JOIN Table2 AS tt
ON t.id = tt.id
LEFT JOIN Table3 AS ttt
ON t.id = ttt.id

请注意,我使用表的别名(通过使用AS),以便我可以更轻松地引用特定的表。例如,t表示表1,tt表示表2,ttt表示表3。

连接通常在SQL中使用,因此查看INNER JOIN,RIGHT JOIN,FULL JOIN和SELF JOIN非常有用。

希望这有帮助。

学习好运!

答案 1 :(得分:0)

您需要使用LEFT JOIN

SELECT * FROM table1 LEFT JOIN table2 ON Table1.ID = Table2.table1_id