SQL内部连接一对多

时间:2014-09-23 18:10:54

标签: sql join

假设我有两个表,表1和表2.表1与表2有一对多的关系。

如果表1是我的基表(SELECT something FROM table1),并且内联接到表2,那么当从表2中选择任何字段时,将返回表2中的哪些值?

  • 返回的第一个值是多少?和excel的vlookup功能一样?
  • 加入的最后一个值?

E.G。

Table1
     Account ID |      email      
         1      |   abc@def.com
         2      |   cats@dogs.com
         3      |   ex@example.com

Table 2
Subscription ID | Account ID  |       Email       |      Created
    100         |     1       |    abc@def.com    |    2014-01-01
    102         |     2       |    cats@dogs.com  |    2014-02-02
    103         |     1       |    abc@def.com    |    2014-03-03

因此,如果我根据订阅运行查询来选择帐户的创建日期,我可以运行SELECT min(Created)来获取第一个帐户。

但是什么是默认行为?如果我的左表是表1加入表2的帐户ID,我选择创建的字段,将返回? 2014-01-01或2014-03-03?

1 个答案:

答案 0 :(得分:6)

您将返回两个记录。当您JOIN表时,您将获得符合JOINWHERE条款以及任何GROUP BY / HAVING条款标准的所有记录。如果只需要返回一个,则必须编写代码以指定所需的代码。