• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
haipali
博客园    首页    新随笔    联系   管理    订阅  订阅

刷力扣高频SQL50题(基础)总结

此随笔仅总结个人刷SQL题时,突然不会使用的某函数或某方法,大佬勿看勿喷

  1. regexp '正则表达式'
    一般用于邮箱校验
    例题:查找拥有有效邮箱的用户
select *
from users 
where mail regexp '^[a-zA-Z]+[a-zA-Z0-9_\\./\\-]*@leetcode\\.com$'
  1. 窗口函数
    窗口函数讲解
函数 + over(partition by 分组 order by 排序) as XXX

函数包括:SUM(),COUNT(),AVG()等等
排序:

  • row_number:直接排序,返回1,2,3,4
  • rank:相等同名次占排名,返回1,2,2,4
  • dense_rank:相等同名次不占排名,返回1,2,2,3
    排序后可以加Range限定窗口范围,例如:
    RANGE INTERVAL '5' DAY PRECEDING 五天范围内
  1. 模糊查询 like '%'
    太弱智了有道题一时想不出来,就先记着

  2. Case When THEN
    对标Java中的SWITCH CASE
    格式:

(CASE When 条件 THEN 结果
       Else 结果
 END) 

例题:换座位

# Write your MySQL query statement below
SELECT (CASE
            WHEN MOD(id,2)=1 and id=(SELECT COUNT(*) FROM Seat) THEN id
            WHEN MOD(id,2)=1 THEN id+1
            ELSE id-1
        END
) as id,student
FROM Seat
ORDER BY id
  1. MOD(x,y) 取余 相当于%
  2. UNION 和 UNION ALL联合查询
    详情可以看SQL语句中union all和union的区别以及用法
  3. Concat()和group_concat()拼接字符串
    Concat(参数)用于字符串的直接拼接
    group_concat(分隔符,参数)用于附加分隔符的字符串拼接
  4. LEFT(str,x)和RIGHT(str,x)
    str的左边x字符和str的右边x字符
  5. upper()和lower()
    将字符大写和小写,可以与LEFT()RIGHT()搭配使用
  6. 连接方式
  • LEFT JOIN 左连接
  • RIGHT JOIN 右连接
  • INNER JOIN 内连接
  • CROSS JOIN 交叉连接,也就是笛卡尔积
posted @ 2023-07-14 16:11  蓝光水母  阅读(136)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3