子句
May 8, 2024About 2 min
子句
书写顺序
WITH
SELECT
,DISTINCT
FROM
JOIN
,ON
,USING
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
注意:必须按照 (1) - (9) 的顺序编写子句。
https://blog.csdn.net/siaok/article/details/129762384
执行顺序
WITH
FROM
ON
JOIN
WHERE
GROUP BY
(CUBE|ROLLUP)
HAVING
SELECT
DISTINCT
ORDER BY
LIMIT
FROM
后面跟表,表示从某个表中筛选数据
ON
- on 必须配合join使用
- on 后面只写关联条件
所谓关联条件是两个表的关联字段的关系,或者是一些筛选条件
有n张表关联,就有n-1个关联条件
两张表关联,就有1个关联条件
三张表关联,就有2个关联条件
WHERE
在查询结果中筛选
GROUP BY
WITHROLLUP
:加在 group by 后面,在 group 分组字段的基础上再进行统计数据。
HAVING 与 WHERE
在通过GROUP BY
子句将行汇总到分组之前,WHERE
子句将条件应用于各个行。 但是,HAVING
子句在将行分组到组之后将条件应用于组。
因此,需要注意的是,在GROUP BY
子句之前应用WHERE
子句之后应用HAVING
子句。
LIMIT
一个参数:返回前几个
两个参数
- 返回几个
- 跳过几个
limit m,n
n:表示最多该页显示几行
m:表示从第几行开始取记录,第一个行的索引是0
m = (page-1)×n, page表示第几页
select 参数 from 表格 where 条件 limit N offset M
Limit N
查询table_A中前 50 条数据(按gen_key倒序排列)
select * from table_A order by gen_key desc limit 50
Limit N,M
,Limit M offest N
跳过前 N 条也就是说从 N+1 开始的前 M 条
offset N:跳过N条记录(必须组合使用,单独没有用)
查询 table_A 中第 11 条到 13 条数据
select * from table_A order by gen_key desc limit 3, 10
select * from table_A order by gen_key desc limit 10 OFFSET 3
去除前3条记录后取出前10