mysql题目练习

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值