zoukankan      html  css  js  c++  java
  • 连接查询的时候,on和where的区别。

    连接查询的时候,on和where的区别。

    使用的是NorthWind数据测试。

    1.内部连接。在连接的时候省略了inner。查询客户VINET的订单。

    select * FROM Orders a join Customers b
    on a.CustomerID=b.CustomerID AND a.CustomerID='VINET'

    返回记录按着VINET进行了过滤。

    select * FROM Orders a join Customers b
    on a.CustomerID=b.CustomerID
    WHERE a.CustomerID='VINET'

    和上面的查询返回一样的结果。

    也就是说on和where在内部联系的时候,没有什么区别。都会对返回记录进行过滤。


    2.外部连接,左连接。同样的查询条件。

    select * FROM Orders a LEFT join Customers b
    on a.CustomerID=b.CustomerID AND a.CustomerID='VINET'

    返回了记录是左表中的全部记录,没有按着 a.CustomerID='VINET'进行过滤。

    select * FROM Orders a LEFT join Customers b
    on a.CustomerID=b.CustomerID
    WHERE a.CustomerID='VINET'

    返回的记录进行了过滤。

    这样是因为连接查询首先生成一个临时表,然后再把这个临时表返回给用户。on条件是在生成临时表的时候使用的条件句,不论它是否为真,都返回左表的记录。

    where条件是在生成临时表之后使用的,这时候和连接已经没有关系了,它返回满足条件的记录。

  • 相关阅读:
    USTC 软硕讯飞班参考资源
    nginx 负载均衡
    Meidawiki 配置
    10 款实用的jquery插件
    Mongodb 定时释放内存
    互联网产品精神解读
    简单的缓冲区溢出实验
    fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
    C#的override、new、vitutal一例
    SQL Server 2008导入、导出数据库
  • 原文地址:https://www.cnblogs.com/363546828/p/3812299.html
Copyright © 2011-2022 走看看