zoukankan      html  css  js  c++  java
  • 表连接查询 条件在On与Where后区别

    表连接条件放在 On 和 Where 后面有什么区别吗?


    答案是有区别的,所有的连接条件都必需要放在ON后面,不然前面的所有LEFT,和RIGHT关联将作为摆设,而不起任何作用。

    下面用两张表people和scores,people表的Id关联scores表的pid证明下:
    在这里插入图片描述
    1. LEFT JOIN 测试
        1.1条件在On后:

      SELECT 
    	  s.*,
    	  p.*
      FROM [test].[dbo].[scores] s
      Left JOIN [test].[dbo].[people] p ON 1=1 AND s.pid=p.id
    

    在这里插入图片描述
        1.2条件在Where后:

      SELECT 
    	  s.*,
    	  p.*
      FROM [test].[dbo].[scores] s
      Left JOIN [test].[dbo].[people] p ON 1=1
      Where s.pid=p.id
    

    在这里插入图片描述
        1.3 区别:
         可以看到:表连接条件放在Where后面,LEFT JOIN的作用失效。

    2. Right JOIN 测试
        2.1条件在On后:

      SELECT 
    	  s.*,
    	  p.*
      FROM [test].[dbo].[scores] s
      Right JOIN [test].[dbo].[people] p ON 1=1 AND s.pid=p.id
    

    在这里插入图片描述
        2.2条件在Where后:

      SELECT 
    	  s.*,
    	  p.*
      FROM [test].[dbo].[scores] s
      Right JOIN [test].[dbo].[people] p ON 1=1 
      Where s.pid=p.id
    

    在这里插入图片描述
        2.3 区别:
         可以看到:表连接条件放在Where后面,Right JOIN的作用失效。

    3.总结:
         所有的连接条件都必需要放在ON后面,不然前面的所有LEFT,和RIGHT关联将作为摆设,而不起任何作用。

  • 相关阅读:
    迭代器在LinkedList上的删除
    java多线程:CopyOnWriteArrayList
    vs中代码编译通过,但还是有红色波浪线
    vs中项目属性配置
    TortoiseGit安装与配置
    DC(device context)
    weak_ptr 使用
    C++ 中shared_ptr循环引用计数问题
    for_each与lambda表达式联合使用
    new 和 make_shared 在内存上的区别
  • 原文地址:https://www.cnblogs.com/wangqilong/p/12540387.html
Copyright © 2011-2022 走看看