SQL 之 内连接

关键字:INNER JOIN  , ON

Customers

CustomerID        FirstName        LastName

-------------------------------------------------------

        1                   William           Smith

        2                   Natalie           Lopez

        3                   Brenda           Harper

        4                   Adam            Petrie

 

 

Orders

OrderID    CustomerID     Quantity     PricePerItem

---------------------------------------------------------------------------

        1                   1                 4               2.50

        2                   2                 10              1.25

        3                   2                 12              1.50

        4                   3                 5               4.00

 

内连接:

SELECT *

FROM Customers

INNER JOIN Orders

ON Customers.CustomerID = Orders.CustomerID

 

结果

CustomerID FirstName LastName CustomerID OrderID Quantity PricePerItem

        1            William            Smith         1                1                4                  2.50

        2            Natalie            Lopez         2                 2               10               1.25

        2            Natalie            Lopez         2                 3               12                1.50

        3             Brenda           Harper         3               4                5                4.00

 

依据CustomersID进行内连接的交集。前缀用于区分两个不同的表的相同的列名CustomersID

 

A INNER JOIN B B INNER JOIN A结果一样,区别是:前者先显示A表中的列,后者是先显示B表中的列。

 

内连接的另一种实现方式:FROMWHERE

SELECT *

FROM Customers, Orders

WHERE Customers.CustomerID = Orders.CustomerID

 

问题:上面的示例中CustomerID重复输出,原因是INNER JOIN返回两个表在CustomerID相等的行,并完整地输出(SELECT *)。

解决:指定想要选择的列,通过在FROMINNER JOIN的后面插入关键字AS从而指定表的别名,则在SELECTON都可以使用别名来指定表。

SELECT

C.CustomerID ASCust ID,

C.FirstName ASFirst Name,

C.LastName ASLast Name,

O.OrderID ASOrder ID,

O.Quantity ASQty,

O.PricePerItem ASPrice

FROM Customer AS C

INNER JOIN Order AS O

ON C.CustomerID =O.CustomerID

 

Oracle里面不使用AS来指定表的别名,FROM TableName AliasTableName...

SELECT

C.CustomerID ASCust ID,

C.FirstName ASFirst Name,

C.LastName ASLast Name,

O.OrderID ASOrder ID,

O.Quantity ASQty,

O.PricePerItem ASPrice

FROM Customer C

INNER JOIN Order O

ON C.CustomerID =O.CustomerID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值