MySQL零散拾遗(二)
列的别名只能在 ORDER BY 中使用,不能在 WHERE 中使用
举个栗子,有一个员工表employees
显示出表 employees
的 员工id,员工的月薪还有年薪,并按年薪进行升序排序。
SELECT employee_id, salary, salary * 12 annual_sal
FROM employees
ORDER BY annual_sal
但是列的别名不能在 WHERE 中使用
下面的MySQL语句会报错
SELECT employee_id, salary, salary * 12 annual_sal
FROM employees
WHERE annual_sal > 81600
为什么?进行解释
当 ORDER BY
和 WHERE
同时出现时,WHERE
要往前放,即 WHERE
放在 FROM
的后面,ORDER BY
放在 WHERE
的后面。
SELECT employee_id, salary
FROM employees
WHERE department_id IN (50, 60, 70)
ORDER BY depart_id DESC
MySQL中 SELECT 查询语句的执行顺序,以上面的语句进行分析,首先执行 FROM employees
从哪个表中取数据,然后执行 WHERE department_id IN (50, 60, 70)
看看有什么过滤条件,筛选完后留下一波数据,然后执行 SELECT employee_id, salary
看看你想查什么数据(哪些字段或者列)这时可以对列进行起别名,最后执行ORDER BY depart_id DESC
有了列的别名后才能使用列的别名进行对查询结果进行排序。
一句话总结:WHERE
在SELECT
前面执行,所以在SELECT
中定义的列的别名,无法在WHERE
使用。
WHERE … ORDER BY … LIMIT 声明顺序如下
SELECT employee_id, last_name, salary
FROM employees
WHERE salary > 600
ORDER BY salary DESC
LIMIT 0, 10;
# LIMIT 10;
LIMIT
的格式:严格来说:LIMIT 位置偏移量, 条目数
结构 LIMIT 0, 条目数
等价于 LIMIT 条目数
LIMIT
常用于分页机制
需求:每页显示pageSize
条记录,此时显示第pageNo
页:
公式:LIMIT (pageNo - 1) * pageSize,pageSize;
MySQL 8.0中可以使用 “LIMIT 3 OFFSET 4”,意思是获取从第5条记录开始后面的3条记录,和 “LIMIT 4, 3” 返回的结果相同。
原文地址:https://blog.csdn.net/ckk1314520/article/details/140477851
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!