• mysql 外连接的时候,条件在on后面和条件在where后面的区别


    最近使用mysql的时候碰到一个问题:当一个表外联另一个表的时候,将一些查询条件放在on后面和放在where后面不太一样:

    学生分数表stuscore:

    当查询语句如下(查询语句1):

    SELECT a.name,a.subject,a.score,a.stuid ,b.name,b.subject,b.score,b.stuid
    FROM stuscore a
    LEFT JOIN stuscore b ON a.subject=b.subject WHERE a.score >100

    查询结果如下:查询结果为空;

    当查询语句如下时(查询语句2):

    SELECT a.name,a.subject,a.score,a.stuid ,b.name,b.subject,b.score,b.stuid
    FROM stuscore a
    LEFT JOIN stuscore b ON a.subject=b.subject AND a.score >100

    查询的结果如下:

    我发现查询结果不为空,但是后面的字段都为空。

    总结原因:当条件放在on后面的时候(如查询语句2),后面的条件作为连接条件,如果不满足,则显示左的一条数据,由标的查询字段都用null填充;

        当条件放在where后面的时候(如查询语句1),后面的条件作为查询条件,是在连表以后,再过滤的条件,只要不满足就过滤掉,所以查询出来的结果为空。

        所以一定要知道外连接的查询原理。

  • 相关阅读:
    zzuli---1912---小火山的爱情密码
    zzuli---1907---
    zzuli---1899---985的最大和难题
    zzuli---1898---985的数字难题
    Light oj ---1058---poj---1971---Parallelogram Counting
    UVA---10200
    poj---1064---Cable master
    hdu---5423---Rikka with Tree
    fzu---2128
    Bookshelf 2 01背包
  • 原文地址:https://www.cnblogs.com/yidaijiankuanzhongbuhui/p/8511476.html
Copyright © 2020-2023  润新知