Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 连接:从多个表检索数据 » 连接的工作原理

 

连接两个表

为了理解简单内连接的计算方式,请参见以下查询。它回答的问题是:哪些产品尺码的订购数量与库存数量相同?

SELECT DISTINCT Name, Size,
    SalesOrderItems.Quantity
FROM Products JOIN SalesOrderItems
ON Products.ID = SalesOrderItems.ProductID
  AND Products.Quantity = SalesOrderItems.Quantity;
name Size Quantity
Baseball Cap One size fits all 12
Visor One size fits all 36

该查询解释如下。请注意,这是对如何处理此查询的概念说明,用来阐释涉及连接的查询的语义。它不表示 SQL Anywhere 实际计算结果集的方式。

  • 创建 Products 表和 SalesOrderItems 表的矢量积。矢量积包含来自这两个表的各行的所有组合。

  • 排除产品 ID 不相同的所有行(由于使用了连接条件 Products.ID = SalesOrderItems.ProductID)。

  • 排除数量不相同的所有行(由于使用了连接条件 Products.Quantity = SalesOrderItems.Quantity)。

  • 创建具有以下三列的结果表:Products.Name、Products.Size 和 SalesOrderItems.Quantity。

  • 排除所有重复行(由于 DISTINCT 关键字)。

有关如何计算外连接的说明,请参见外连接