zoukankan      html  css  js  c++  java
  • SQL中ON和WHERE的区别

    一直觉得自己SQL不熟练,于是开始刷SQL题,发现了不懂SQL中ON和WHERE的区别,搜索结果网上几十几十篇的博客互相抄 ,关键抄得还很迷惑。好在最后还是弄懂了。


    1.首先on是用在连接join中的,它的意思是在生成连接结果的时候  偏心地 剔除掉一些不符合条件的

    至于怎么偏心,比如在left join中 它就“偏袒”左(left)边的表 只把右边的表中不符合条件的剔除了(置为null)

    如下:

    表main

    表ext

    可以把这两张表看作是用来存放用户信息的, main放置主要信息,ext表放置附加信息,两张表的关系是1对1的,以id字符作为对应关系键。现在我们需要将地址不为杭州的所有用户信息筛选出来,结果中需要包含main表和ext表的所有字段数据。

    select * from main left JOIN ext on main.id = ext.id and address <> '杭州'

    闭上眼睛, 请用大脑人肉运行一下这段SQL, 想象一下是什么结果。

    这个例子中划红线的,原左边记录被“偏袒”留下了,右边的剔除了(置为null)


    right join同理偏袒右(right)边的表,但是inner join “偏心”向中间 就和 where没区别了。


    2.而where呢,它是在生成连接结果之后,再去一整条记录去剔除(原两张表的内容都会被剔除)



  • 相关阅读:
    类似最长递增子序,记忆化DP—— Codeforces Beta Round #4 (Div. 2 Only)D Mysterious Present
    最小逆序数对——hdu1394
    区间更新 求总区间——hdu1754
    抽象类 虚函数实现
    poj2271
    poj2246
    poj2410
    poj2567
    poj2247
    Integration Services 学习(7):包部署 (转自游子吟)
  • 原文地址:https://www.cnblogs.com/chz-blogs/p/9380947.html
Copyright © 2011-2022 走看看