博客
关于我
LEFT OUTER JOIN
阅读量:770 次
发布时间:2019-03-23

本文共 1212 字,大约阅读时间需要 4 分钟。

与数据库关联查询时,确保被关联表的选择和多次引用处理得当,是成功获取数据的关键。在本次任务中,我们面临一个复杂的关联场景,主要涉及以下几个方面:

一、表关联与主键关系在进行关联查询时,记住要识别出哪个表没有外键属性。通常,这种情况下会涉及到主键的复合类型,主要是由外键和 其它自表字段共同构成的联合主键。特别需要注意的是,关联时需要正确使用专用别名,以避免出现歧义。

二、条件查询与行记录处理对于关联时多次引用同一表的场景,需要明确列出查询条件。通常,我们会使用左外连接的方式,确保在关联表中找到对应记录时,相关信息能够一并展示。如果关联表中不存在匹配数据,则应返回null值,但不要忽略主表记录的存在。

三、查询优化与结果展示在编写具体查询时,确保关联条件明确,并位于join语句内部。这种做法可以在主表记录不存在关联数据的情况下,也能正确呈现主表信息,同时关联字段的缺失直接以null形式展示。需要注意的是,主表记录的与否不是关联字段缺失所影响的因素。

四、SQL语句规范在撰写关联查询时,关联条件应放在join子句中,而主表筛选条件应放在where子句中。确保根节点是main的左 join女表,main的右 join表则作为外挂表呈现。这一点对于查询结果的准确性至关重要。

具体到本次案例,我们创建了两个主要表:

  • studentMesg表:id、status、mesg字段构成复合主键
  • student表:id作为外键引用studentMesg表
  • 通过以下SQL查询,对于指定主表记录,可以实现多表关联查询:

    SELECT A.id, A.name, A.age, B.mesg, C.mesg FROM Student AS A LEFT OUTER JOIN studentMesg AS B ON A.id = B.id AND B.stauts=1 LEFT OUTER JOIN studentMesg AS C ON A.id = C.id AND C.stauts=2 WHERE A.id = '001';

    查询执行后,将返回包含以下字段的结果:+-----+------+--------+-----------+----------+| id | name | age | mesg | mesg |+-----+------+--------+-----------+----------+| 001 | Tom | 23 | TomMesg1 | TomMesg2 |+-----+------+--------+-----------+----------+

    特别注意参数的顺序和表达式的完整性。在撰写类似SQL时,如果主表的外键数据不存在关联记录,只会在关联字段中返回null值,对关联结果不会产生任何影响。重要的是,关联条件必须放在join子句中,而主表筛选条件则应放在where子句中。

    转载地址:http://fpwzk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现找出买卖股票的最大利润算法(附完整源码)
    查看>>
    Objective-C实现找出二维数组中的鞍点(附完整源码)
    查看>>
    Objective-C实现找出由两个 3 位数字的乘积构成的最大回文数的算法 (附完整源码)
    查看>>
    Objective-C实现找出矩阵的最大最小值(附完整源码)
    查看>>
    Objective-C实现找到一个数字数组的中值算法(附完整源码)
    查看>>
    Objective-C实现找到具有 500 个除数的第一个三角形数算法(附完整源码)
    查看>>
    Objective-C实现找到最近的点对之间的距离算法(附完整源码)
    查看>>
    Objective-C实现抓包实例(附完整源码)
    查看>>
    Objective-C实现抽签抓阄(附完整源码)
    查看>>
    Objective-C实现抽象工厂模式(附完整源码)
    查看>>
    Objective-C实现拉格朗日插值法(附完整源码)
    查看>>
    Objective-C实现拉格朗日插值算法(附完整源码)
    查看>>
    Objective-C实现拓扑排序算法(附完整源码)
    查看>>
    Objective-C实现拦截输入法(附完整源码)
    查看>>
    Objective-C实现括号匹配(附完整源码)
    查看>>
    Objective-C实现拷贝二进制文件(附完整源码)
    查看>>
    Objective-C实现指定内存空间获取时间的函数(附完整源码)
    查看>>
    Objective-C实现指定点 x 处计算多项式 f(x) 并返回值算法(附完整源码)
    查看>>
    Objective-C实现按位倒序(附完整源码)
    查看>>
    Objective-C实现按位的isPowerOfTwo算法(附完整源码)
    查看>>