本文是最后Excel SQL语法的最后一篇文章了。在Excel中如何使用SQL和SQL的初级语法见我前面的文章,有问题的地方可以在评论区直接问我。本文的所有SQL都是基于下面三张表进行操作的
1.学生信息表
![2e3bd64809aee8608293b4b2c6f4d495.png](https://i-blog.csdnimg.cn/blog_migrate/9a43e8857d01bbdd41073cee809230c2.jpeg)
2.学生成绩表
![0579be6f77d8eda25e2c99f53ff7936a.png](https://i-blog.csdnimg.cn/blog_migrate/ee7d06391a02b1d9a4f7d1c82ae11798.jpeg)
3.学生兴趣表
![7cc82273613136a4d5a2751876eaa389.png](https://i-blog.csdnimg.cn/blog_migrate/ffc55b2c13c9df66dd33afc706c92b47.jpeg)
在这篇文章中主要讲一些稍微复杂的数据处理方法。主要包括模糊查询、嵌套查询、多字段关联、多表合并。
一. 模糊查询
模糊查询通过LIKE操作实现,例如要选出出生日期为2001年的记录,SQL语句如下
SELECT * FROM [学生信息表$] WHERE 出生日期 LIKE '2001%';
其中%表示通配符。执行结果如下
![737fd799083db1c579163ded4ce36a36.png](https://i-blog.csdnimg.cn/blog_migrate/b81fca032c974c67e59f97189e6745d9.jpeg)
二. 嵌套查询
比如通过INNER JOIN关联合并上面三张表,需要先将前两张表合并,并作为一个子查询语句和第三张表再进行INNER JOIN,即多张表合并可以通过两两依次合并的方式完成。SQL语句如下
![e2fd064885698b481bb559a17d1a4763.png](https://i-blog.csdnimg.cn/blog_migrate/856dbb1e7fc0ac14727a79e907c871df.jpeg)
执行结果如下
![06860c04509f03d64e04efb7ba541ea9.png](https://i-blog.csdnimg.cn/blog_migrate/39e0f8a2c93734d41f881af110abc691.jpeg)
三. 多字段关联表
在前面,我们在关联两张表时,都用学号这一个key去关联的。有时候需要多个key去关联两张表,这时候只需要用AND将多key的关联条件连起来就可以了。例如现在根据学号和年龄对学生信息表和学生成绩表进行关联,SQL语句如下
![71583904ede5acda6cbd4e0cce753ec2.png](https://i-blog.csdnimg.cn/blog_migrate/4dd1de72c33d56e8e7a01367b2bfd454.jpeg)
如果多个条件通过AND连接,以此类推。
四. 多表合并
这里多表合并是指将多张表的数据都合并到一张表,不遗漏任何一个key。比如两张表合并需要使用FULL JOIN就可以了,三张表合并就先用FULL JOIN合并前两张,再做一个嵌套去合并第三张。但是Excel SQL不支持FULL JOIN,如果通过LEFT JOIN、RIGHT JOIN和UNION去实现FULL JOIN,再嵌套两两合并,效率会很低,而且代码量非常大和臃肿。
其实可以通过另一个思路去解决,先得到所有的key,然后再两两通过LEFT JOIN合并就可以了,例如上面三张表的合并,SQL语句如下
![702e092741ec4cecfe94bd6931780f44.png](https://i-blog.csdnimg.cn/blog_migrate/e224c783ea9613b40e109adf8c5dc23b.jpeg)
执行结果如下
![a863d63020a4c5b0ae1b0b3994b4a3c2.png](https://i-blog.csdnimg.cn/blog_migrate/92899c3d8914d0f8e8e1f31e30047900.jpeg)
至此,Excel SQL的语法基本上就讲完了,关于SQL的许多优化技巧还需要自己多写代码多练,才能有更深的体会。在Excel通过SQL处理好数据后,直接可以进行数据透视,而且数据增加时,只需要更新一下就好了,对于经常使用Excel的人来说还是比较方便的。
如果有不懂或需要SQL来解决的问题,都可以评论区直接留言讨论交流,谢谢!