sql查询以下模式

um6iljoc  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(224)

数据库架构
学生桌

╔════════════╦═════════════╦══════════════╦═════════════╗
║ student_id ║ first_name  ║ last_name    ║ advisor_id  ║
╠════════════╬═════════════╬══════════════╬═════════════╣
║          1 ║ Tanisha     ║ Blake        ║ 2           ║
║          2 ║ Jess        ║ Goldsmith    ║ NULL        ║
║          3 ║ Tracy       ║ Wu           ║ 3           ║
║          4 ║ Alvin       ║ Grand        ║ 1           ║
║          5 ║ Felix       ║ Zimmermann   ║ 2           ║
╚════════════╩═════════════╩══════════════╩═════════════╝

顾问表

╔════════════╦════════════╦═══════════╗
║ advisor_id ║ first_name ║ last_name ║
╠════════════╬════════════╬═══════════╣
║          1 ║ James      ║ Francis   ║
║          2 ║ Amy        ║ Cheng     ║
║          3 ║ Lamar      ║ Alexander ║
║          4 ║ Anita      ║ Woods     ║
╚════════════╩════════════╩═══════════╝

获取所有学生的名字、姓氏和顾问的名字和姓氏,不包括没有分配学生的顾问

fnatzsnv

fnatzsnv1#

他们不一样,第一个会排斥学生,第二个不会。

8yparm6h

8yparm6h2#

是的,这两个问题在使用内部联接的情况下是相同的,因为它不会考虑来自每个表的记录集,这些记录集在其他表中没有相应的结果。但如果使用外部联接,则可能需要在其他表中设置剔除具有空值的记录的条件。
例如,考虑这个查询

Select * from students s left outer join advisers a on ( s.avisor_id = a.adviser_id)

这个查询不仅会打印那些有导师的学生,也会给没有导师的学生。因此,只需检查check id为null,就可以删除不需要的记录集

相关问题