一、知识总结拓展&答案

1、知识点总结与拓展

1)字符串截取
  • 从左边截取字符串:left(字段名,n) 从左边第n个开始取到最右边
  • 从右边截取字符串:right(字段名,n)从右边地n个开始取到最左边
  • 从中间开始截取字符串:substring(字段名,n,m)从左边第n个开始取m个
2)条件
  • 或:(A OR B)-- 要用括号
  • 与:A  AND B
  • 非:<>

2、完整代码

SELECT uid,nick_name,achievement
FROM user_info 
WHERE left(nick_name,2)='牛客'AND RIGHT(nick_name,1)='号' #左边开头两个字符是‘牛客',右边结尾1个字符是‘号’。
AND achievement BETWEEN 1200 AND 2500 #成就值在1200~2500之间
AND uid in(
	SELECT uid FROM exam_record GROUP BY uid HAVING MAX(DATE_FORMAT(start_time,'%Y%m'))='202109' #最后依次活跃的答卷日期是2021年9月的用户
	UNION ALL
	SELECT uid com_time FROM practice_record GROUP BY uid HAVING MAX(DATE_FORMAT(submit_time,'%Y%m'))='202109'  #最后依次活跃的答题目日期是2021年9月的用户
);/*最近一次活跃(答题或作答试卷)在2021年9月的用户*/