如何连接三个或四个没有等量行的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相对应的所有数据都没有重复。
对于一个新人来说有点棘手...
答案 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