mysql题目练习
select firstName,lastName,city,state from Person p left join Address a on a.personId = p.personId
left join是从左向右添加,第二张表添加到第一张
select ifnull((SELECT distinct Salary AS SecondHighestSalary
FROM Employee
ORDER BY Salary DESC
LIMIT 1,1),null) as SecondHighestSalary
加不加 DISTINCT 关键字的作用取决于数据表中是否存在相同的薪水,ifnull(expr1,expr2)如果expr1不等于null,返回expr1,如果为null返回exper2,desc降序排列,limit 1,1 从第一行开始,要第二个
补充:通常,OFFSET 用于分页,结合 LIMIT 使用,以指定从查询结果集的哪一行开始返回数据。例如,LIMIT 10 OFFSET 20 表示从结果集的第 21 行开始,返回最多 10 行数据,用于实现分页效果。
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
DETERMINISTIC
BEGIN
DECLARE result INT;
SET result = (
SELECT IFNULL(
(SELECT MIN(Salary)
FROM (SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT N) AS subquery),
NULL)
);
RETURN result;
END
DETERMINISTIC是声明一个函数是确定函数,declare声明一个变量,函数一定要有返回值return,limit N是从0开始的前n行,但是0是空集
以下是怎么调用,求第二高salary
SELECT getNthHighestSalary(2)