博客
关于我
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实现操作MySQL(附完整源码)
    查看>>
    Objective-C实现操作注册表 (附完整源码)
    查看>>
    Objective-C实现攀登 n 级楼梯的不同方式算法(附完整源码)
    查看>>
    Objective-C实现改变图片亮度算法(附完整源码)
    查看>>
    Objective-C实现数乘以二multiplyByTwo算法(附完整源码)
    查看>>
    Objective-C实现数列的和(附完整源码)
    查看>>
    Objective-C实现数字图像处理算法(附完整源码)
    查看>>
    Objective-C实现数组切片(附完整源码)
    查看>>
    Objective-C实现数组去重(附完整源码)
    查看>>
    Objective-C实现数组循环右移三次(附完整源码)
    查看>>
    Objective-C实现数组的循环右移(附完整源码)
    查看>>
    Objective-C实现数组的循环左移(附完整源码)
    查看>>
    Objective-C实现数组逆置 (附完整源码)
    查看>>
    Objective-C实现数除以二divideByTwo算法(附完整源码)
    查看>>
    Objective-C实现整个字符串转换为小写字母算法(附完整源码)
    查看>>
    Objective-C实现整数N以内的质数算法(附完整源码)
    查看>>
    Objective-C实现文件传输(附完整源码)
    查看>>
    Objective-C实现文件分割(附完整源码)
    查看>>
    Objective-C实现文件拷贝(附完整源码)
    查看>>
    Objective-C实现文件断点传输(附完整源码)
    查看>>