联接中的表

更新:2007 年 11 月

当组合多个表中的数据时,必须决定使用什么表。有几个重要的注意事项:

  • 组合三个或更多表   每个 JOIN 操作组合两个表。但是,可以在一个查询内使用多个 JOIN 操作来组合来自任意多个表的数据。由于每个 JOIN 操作的结果实际上是一个表,所以可以将该结果作为操作数用在后续联接操作中。例如,若要在创建的结果集内使每行包含一个书名、一个作者以及该作者收到的该书的版税百分比,必须组合 authors、titles 和 titleauthor 这三个表中的数据。得到的 SQL 可能像下面这样:

    SELECT 
        title, 
        au_fname, 
        au_lname, 
        royaltyper
    FROM 
        authors 
            INNER JOIN 
            titleauthor 
            ON authors.au_id 
            =  titleauthor.au_id
       INNER JOIN
       titles 
             ON titleauthor.title_id 
             =  titles.title_id
    
  • 将某个表仅用于联接其他表   可以在联接中包括某个表,即使不想在结果集内包含该表中的任何列。例如,若要在建立的结果集内使每行描述一对书名/商店对(该商店出售此书),请包括 titles 和 stores 这两个表中的列。但是必须使用第三个表,即 sales 表,来确定哪些商店销售了哪些书。得到的 SQL 可能像下面这样:

    SELECT title, stor_name 
    FROM titles 
             INNER JOIN 
             sales 
             ON titles.title_id = sales.title_id 
                 INNER JOIN 
                 stores 
                 ON 
                 sales.stor_id = stores.stor_id
    

    注意 sales 表不对结果集分配列。

  • 在一个查询中使用某个表两次   可以在单个查询内使用同一个表两次(或更多次)。有关更多信息,请参见在一个查询中使用某个表两次

  • 使用其他对象代替表   可以使用查询、视图或返回表的用户定义函数代替表。有关更多信息,请参见如何:使用表以外的对象创建查询

有关将表添加到查询的更多信息,请参见如何:向查询添加表

请参见

参考

联接属性

其他资源

使用联接查询

设计查询和视图