详细的资料二
######执行顺序
sql查询命令,总有一些让人不明白的地方,很大程度上来源于sql查询语句的执行顺序,具体如下:
写的顺序:select … from… where… group by… having… order by… limit [offset,]
执行顺序:from… where…group by… having… select … order by… limit
比如说最初容易犯的错误:
id | name | age | height | gender | cls_id |
---|---|---|---|---|---|
1 | 小明 | 18 | 180.00 | 男 | 1 |
2 | 校花 | 18 | 160.00 | 女 | 1 |
select gender,name from students group by gender;
预期的结果:以gender为组列出所有的name
先执行from,找到students表格,生成临时表,再执行group by语句,生成临时表2,结构大概是:
gender |
---|
男 |
女 |
此时再执行
select gender,name
会执行错误。正确的是
select gender,group_concat(name) from students;
如果在写查询命令时出错,可以尝试按照这个顺序来自己验证一下。
类似的还有:
select gender,count(*) from students;