加入多个表的最佳方式

时间:2014-08-13 13:28:18

标签: sql

我的问题如下。

我需要从不同的表中查询15列。这是最好的方法。例如,我写了一个查询,选择guid(每个DynFlow进程的唯一ID),为此guid修改的最后日期,使用此guid在进程上花费的时间,最后一个修饰符的名称。所以现在我有16行,5列,guid作为唯一ID。这些都来自同一张桌子。

现在我有一个不同的表,它存储有关在DynFlow中采取的每个步骤的数据。也为他们提供了Guid。我的问题是,我需要为上一个查询中的每个guid提供的大多数数据都不存在于这些表中。例如,partnerName没有给出任何这些guid,customerID被赋予其中一半,每个都产生不同的行数。

所以,举个例子,我从第一个查询得到16行,从第二个查询得到12行(这12行与第一个查询具有相同的guid),来自另一个表。我怎么能加入他们,所以那些匹配guid的人可以接受customerID,而其他人则会被'none'或其他东西填充?

2 个答案:

答案 0 :(得分:1)

正如Dimt所指出的那样,查看LEFT JOIN(甚至所有OUTER JOIN用法LEFT, RIGHT and FULL)的使用方法,就是如何从表中获取行而不是所有行都匹配的行加入。如果您在使用它时遇到任何问题,请回答一个更具体的问题。

答案 1 :(得分:1)

您需要使用左连接。

LEFT JOIN关键字返回左表(table1)中的所有行,右表(table2)中的匹配行。当没有匹配时,结果在右侧为NULL。

左表始终是'left join'关键字之前的表名。

基本语法=

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;