MYSQL SQL做题总结
一.关于join
1.内外左右连接
2.交叉联结(corss join)
使用交叉联结会将两个表中所有的数据两两组合。如下图,是对表“text”自身进行交叉联结的结果:
3.三表双双连接
力扣题目
a与b表笛卡尔积,再与c表左连接。
SELECT a.student_id, a.student_name, b.subject_name, count(c.subject_name) AS attended_exams FROM Students AS a
CROSS JOIN Subjects AS b # CROSS JOIN
LEFT JOIN Examinations AS c ON a.student_id = c.student_id AND b.subject_name = c.subject_name # LEFT JOIN ON
GROUP BY student_id, subject_name
ORDER BY student_id, subject_name;
二.关于字符个数
三.关于日期计算
-
datediff(日期1, 日期2)
-
timestampdiff(时间类型, 日期1, 日期2)
四.关于With as
with A as (select * from class)
select *from A
这个语句的意思就是,先执行select * from class 得到一个结果,将这个结果记录为A ,在执行select *from A 语句。A 表只是一个别名。
也就是将重复用到的大批量 的SQL语句,放到with as 中,加一个别名,在后面用到的时候就可以直接用。