限制只返回 1 条结果(单独指令)
-- 查询所有数据,但只返回1条记录
SELECT * FROM Employee LIMIT 1;
LIMIT 1 单独使用时,会从查询结果中只取第一条记录(无论排序如何)。
跳过前 N 条记录(单独指令)
-- 查询所有数据,跳过前1条,返回后面的所有记录
SELECT * FROM Employee OFFSET 1;
去除重复值(单独指令)
-- 只查询所有不重复的薪水
SELECT DISTINCT salary FROM Employee;
这个语句会返回所有员工的薪水,但每个薪水值只出现一次(去重效果)。
组合使用示例
如果要实现 "第二高的不同薪水",需要将这些指令结合排序一起使用:
-- 步骤1:去重
SELECT DISTINCT salary FROM Employee
-- 步骤2:按降序排序(从高到低)
SELECT DISTINCT salary FROM Employee ORDER BY salary DESC
-- 步骤3:跳过第1条(最高),只取1条(第二高)
SELECT DISTINCT salary FROM Employee
ORDER BY salary DESC
LIMIT 1 OFFSET 1;
函数
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
1. CREATE FUNCTION
这是告诉 MySQL:“我要创建一个自定义函数啦”。
函数就像一个 “小工具”,可以接收一些参数,做一些固定操作,然后返回一个结果。比如这里的函数就是用来计算 “第 N 高的工资” 的工具。
2. getNthHighestSalary(N INT)
这是给这个 “小工具” 起名字,并且规定它要接收的参数:
getNthHighestSalary:函数的名字(按功能起的,意思是 “获取第 N 高的工资”)。
(N INT):括号里是参数。N 是参数的名字(比如查第 2 高工资时,N 就是 2);INT 表示这个参数必须是整数。
3. RETURNS INT
告诉 MySQL:“这个函数最终会返回一个整数结果”。
因为工资是整数(比如 100、200),所以这里用 INT(整数类型)。
SELECT IFNULL 是 MySQL 中用来处理 空值(NULL) 的函数,作用是 “如果第一个值是 NULL,就返回第二个值;否则就返回第一个值”。
SELECT IFNULL(
(子查询的结果), -- 比如查询第二高工资,可能返回 200 或 NULL
NULL -- 如果子查询结果是 NULL,就返回 NULL
)
1672

被折叠的 条评论
为什么被折叠?



