使用唯一数据连接 SQL 表(列数不同!)
Posted
技术标签:
【中文标题】使用唯一数据连接 SQL 表(列数不同!)【英文标题】:Join SQL Tables with Unique Data (Not same number of columns!) 【发布时间】:2014-05-19 16:39:08 【问题描述】:如何在确保主键/外键不重复的同时,连接三个或四个行数不同的 SQL 表?
结构:
表 1:id、first_name、last_name、email
Table2:id(独立于表1中的id)、name、location、table1_id、table2_id
表 3:id、名称、位置
我想要表 1 中的所有数据,然后是表 2 中与 table1_id 对应的所有数据,没有重复。
对于一个新人来说有点棘手......
【问题讨论】:
table3和这个问题有什么关系? 你的意思是“表2中的所有数据都与table1_id对应,没有重复”?您能否提供示例数据来说明您关注的问题? 【参考方案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 指 Table1,tt 指 Table2,ttt 指 Table3。
联接经常在 SQL 中使用,因此查看以下内容很有用:INNER JOIN、RIGHT JOIN、FULL JOIN 和 SELF JOIN。
希望这会有所帮助。
祝你学习顺利!
【讨论】:
【参考方案2】:你会想要使用LEFT JOIN
SELECT * FROM table1 LEFT JOIN table2 ON Table1.ID = Table2.table1_id
【讨论】:
除非我误解了你的需要。 我不这么认为。看起来更像 LEFT JOIN,因为他想要 table1 中的所有数据。 Doh,我是这么想的,然后还是写了 INNER。谢谢。以上是关于使用唯一数据连接 SQL 表(列数不同!)的主要内容,如果未能解决你的问题,请参考以下文章