今天大年初一,2012年第一天出现了纠结的问题。
select sr_date, sr_name,sr_title,sr_text from testTB --后面是这三种方案。--1,这样用 --where sr_date >='2010-10-10' and sr_date <='2010-11-10' and sr_date <>''--Group By sr_date--order by sr_date desc--2,是这样用? --Group By sr_date --having sr_date >='2010-10-10' and sr_date <='2010-11-10' and sr_date <>'' --order by sr_date desc --3,还是这样用?--where sr_date >='2010-10-10' and sr_date <='2010-11-10'--Group By sr_date--having sr_date <>'' --order by sr_date desc
SQL Select语句完整的执行顺序: 1、from子句组装来自不同数据源的数据; 2、where子句基于指定的条件对记录行进行筛选; 3、group by子句将数据划分为多个分组; 4、使用聚集函数进行计算; 5、使用having子句筛选分组; 6、计算所有的表达式; 7、使用order by对结果集进行排序。 另外:一个查询语句各个部分的执行顺序: --8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list> --(1) FROM <left_table> --(3) <join_type> JOIN <right_table> --(2) ON <join_condition> --(4) WHERE <where_condition> --(5) GROUP BY <group_by_list> --(6) WITH {CUBE | ROLLUP} --(7) HAVING <having_condition> --(10) ORDER BY <order_by_list>
[解决办法]
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。
一个查询语句各个部分的执行顺序:
--8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
--(1) FROM <left_table>
--(3) <join_type> JOIN <right_table>
--(2) ON <join_condition>
--(4) WHERE <where_condition>
--(5) GROUP BY <group_by_list>
--(6) WITH {CUBE | ROLLUP}
--(7) HAVING <having_condition>
--(10) ORDER BY <order_by_list>
[解决办法]
sr_date >= ... and sr_date <= ...
sr_date <> '' 是不是多余了?!
[解决办法]
要明白sql的执行顺序。