复杂 SQL 没有一个明确的边界和标准,站在不同角度的人也有不的看法,从客观的角度分析,我大致整理了几点:
1 )涉及多张表:无论是 join 、union 、subquery 、以及 exists 语法结构中,多张表组合查询实现一项业务目标
2 )动态化:整个 SQL 语句会根据参数的不同构造不同的过滤条件或 join 不同的表
3 )复杂表达式:在数据统计领域,时常会出现各种数学计算的表达式,不仅复杂,而且多,例如:大量 case when 、类似同环比计算、以及窗口函数内的计算等
肯定有人会问,为什么要分清复杂 SQL 和简单 SQL ?道理很简单,简单的 SQL 我们通过字符串形式的编程可以解决,也容易维护,但复杂 SQL 通过字符串的形式进行编程,不仅容易出错,长期而言维护成本非常高。
无论是简单 SQL 编程,还是复杂 SQL 编程,ObjectiveSQL 都提供了近乎完美的解决方案,有兴趣的可以了解一下。
github: https://github.com/braisdom/ObjectiveSql 800+ stars
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.