顾名思义,本节重点是使用SQL将两个或多个数据库表连接到一个表中,这是数据科学家的基本技能。内部联接(inner join),和左联接可能是两种最常见的联接。
本文内容整理自 Datacamp| Joining Data in PostgreSQL
Inner Join介绍
初始数据图(Initial data diagram)
我们可以看到id
字段的匹配值用相同的颜色着色。id字段被称为键字段(key field),因为它可以用来将一个表引用到另一个表。left_table和right_table都有另一个名为val的字段。
内部连接图
内部联接只包括键在两个表中的记录。这里可以看到id
字段只匹配值1和4。使用内部联接,我们在right_table中查找与left_table中键字段中的所有条目对应的匹配项。
所以这里只关注那些id
字段匹配的记录, 而不属于内部连接的记录已经消失了。下面是由INNER JOIN得到的表,它给出了right_table的val字段,其中的记录只对应于id
值为1或4的记录,分别被涂成了黄色和紫色。
用以实现这一过程的代码为:
SELECT left_table.id AS L_id
left_table.val AS L_val
right_table.val AS R_val
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id
例子
这里,我们给出两个表, Prime Minister 表 和 President 表,如下:
Prime Minister
country | continent | prime_minister |
---|---|---|
Egypt | Africa | Sherif Ismail |
Portugal | Europe | Antonio Costa |
Vietnam | Aisa | Nguyen Xuan Phuc |
Haiti | North America | Jack Guy Lafontant |
India | Asia | Narendra Modi |
Australia | Oceania | Malcolm Turnbull |
Norway | Europe | Erna Solberg |
Brunei | Asia | Hassanal Bolkiah |
Oman | Asia | Qaboos bin Said al Said |
Spain | Europe | Mariano Rajoy |
President
country | continent | president |
---|---|---|
Egypt | Africa | Abdel Fattah el-Sisi |
Portugal | Europe | Marcelo Rebelo de Sousa |
Haiti | North America | Jovenel Moise |
Uruguay | South America | Jose Mujica |
Liberia | Africa | Ellen Johnson Sirleaf |
Chile | South America |