对数据库基本操作是每个程序员基本功,如何理解并快速记住sql执行的顺序呢,其实一条复杂的sql就能搞定:
1
2
3
4
5
6
7
8
9
|
SELECT
DISTINCT
<select_list>
FROM
<left_table>
<join_type>
JOIN
<right_table>
ON
<join_condition>
WHERE
<where_condition>
GROUP
BY
<group_by_list>
HAVING
<having_condition>
ORDER
BY
<order_by_condition>
LIMIT <limit_number>
|
执行顺序:
1
2
3
4
5
6
7
8
9
10
|
(7)
SELECT
(8)
DISTINCT
<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)
HAVING
<having_condition>
(9)
ORDER
BY
<order_by_condition>
(10) LIMIT <limit_number>
|
另外需要注意的问题:
(1)group by 存在时,select中除了聚集函数外,所有的基本列必须是group by里面存在的;having基本上同group by一起使用的,having类似于where语句,只是having过滤是基于group by 分组后的数据,having一般通过select语句里面的聚集函数进行过滤。