第二高的薪水

1. 介绍

将题中所需的知识点提取出来,达到巩固的效果。

2. 起别名

  • 方式一:使用as
    SELECT 100%98 AS 结果;
  • 方式二:使用空格
    SELECT last_name 姓,first_name 名 FROM 库名;
  • 注意:
    如果别名内含有关键字,建议用双引号引起来,单引号也可以,但是建议用双引号;

3. 去重

  • 示例
# 查询员工表中涉及到的所有的部门编号:
SELECT DISTINCT department
FROM employees;
  • distinct后面只能有一个字段

4. ifnull与isnull

ifnull
  • 示例
# 第一个参数可能为null的表达式 假如说真的为null了就写0
select IFNULL(commission_pct, 0)
from employees;
isnull
  • 示例
# isnull判断某字段表达式是否为null,如果是null,则返回1,否则返回0
SELECT
ISNULL(commission_pct),commission_pct
FROM
employees;

5. 分页查询

  • 应用场景
    当要显示的数据,一页显示不全,需要分页提交sql请求
  • 语法
select 查询列表 第七执行
from 表 第一执行
join type join2 第二执行
on 连接条件 第三执行
where 筛选条件 第四执行
group by 分组字段 第五执行
having 分组后的筛选 第六执行
order by 排序的字段】 第八执行
limit 【offset,】size; 最后执行
offset要显示条目的起始索引(起始索引是从0开始的)
size要显示的条目个数
  • 示例
# 案例2:查询第11-25
SELECT * FROM employees LIMIT 10,15;

LIMIT里面不能做运算
limit 2,1:跳过2条取出1条数据,即读取第3条数据
limit 2 offset 1:跳过1条取两条,即读取第2,3条

6. 排序查询

  • 语法
SELECT 查询列表
FROM
where 筛选条件】
ORDER BY 排序列表 【 ASC / DESC
  • 示例
# 案例:查询员工信息,要求工资从高到低排序
SELECT
*
FROM
employees
ORDER BY salary DESC;
SELECT
*
FROM
employees
ORDER BY salary ASC;
  • 注意事项
  1. asc:升序,desc:降序,如果不写,默认是升序。
  2. order by子句中可以支持单个字段,多个字段,表达式,函数,别名
  3. order by子句一般是放在查询语句的最后面,但有一个limit子句除外,即只有limit子句是放在order by子句的后面,其他的都是放在order by子句的前面
  4. 执行顺序:
select 查询列表 第三执行
from 表 第一执行
where 筛选条件】 第二执行
order by 排序列表 【asc/desc】 第四执行

7. 例题

  • 注意
  1. 如果表中只有一条记录
  2. 如果有多条相同的数据
  3. 如果查到的数据为空
  • 解决方案
# 建立临时表
select
ifnull(
(
select distinct salary
from employee
order by salary desc
limit 1, 1
), NULL
)
as 'SecondHighestSalary';
select
(
select distinct salary
from employee
order by salary desc
limit 1, 1
)
as 'SecondHighestSalary';
posted @   jsqup  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示