标签:
写sql的思路不同于常规编程语言(C、python)等等。前者,考虑如何一步步地得到最终答案;后者,考虑如何一步步地收缩数据范围。
简而言之,前者是面向过程化(for each row do x),后者是面向集合(do all -> another all)。
具体来讲,写sql从两种角度考虑:
一、集合
select T1.x, T1.y from T1 left outer join T2 where T1.z = T2.z
二、子查询
sql语句的任意一部分(select、from、where、having)都可以用子查询去做,比如
select:这地方的子查询必须是标量子查询(明确返回只有一个值的集合,如sum(x)等)
from:select x from (select ...) tmp_table ...
where: exist(select ...)、 in (select ...)
having:比较符号(〉〈)后面跟的,肯定也只能是标量子查询
参考资料:http://www.ituring.com.cn/article/472
标签:
原文地址:http://www.cnblogs.com/johnchow/p/4829246.html