SQL语句casewhen和JOIN的相关解析case when 的⽤法:
SELECT id,name,
(CASE WHEN classid =2THEN1WHEN classid =1THEN2ELSE classid END)as A  FROM py1;
遇到 每⼀, ⼀定⽤ GROUP BY
CREATE TABLE sores (name char(3), sub char)
SELECT name,
max(CASE WHEN  name ='基'THEN  sore ELSE NULL END)as'基',
sql left join 多表连接
max(CASE WHEN  name ='基'THEN  sore ELSE NULL END)as'基',
max(CASE WHEN  name ='基'THEN  sore ELSE NULL END)as'基',
FROM  scores  GROUP BY  name;
JOIN的连接:
两个有联系的表,可以连接
单纯的只有JOIN的时候,ON条件可以和WHERE条件互换
stu表:
class表:
连接是多个表组成⼀个表
表JOIN表 : ⼀个表
表合并,若有相同的列,需要加 表.列
left join 和 join 的区别:
(1)left join必须有on条件
(2)left join会检查左边表的数据是否都包含在新⽣成的表中如果是,与join没有区别
如果不是,⽤NULL与不包含的⾏组成新⾏加⼊新表
class left join stu on classid=class.id
stu left join class on classid=class.id
left join 不能交换左右两边的表
right join和left join⽤法完全相同
多个表连接的情况:
A join
B join
C join D
(A join B) join (C join D)
left join 和 join 的使⽤场景:
stu表:
class表:
join的使⽤场景: 仅仅⽤where不⾜以筛选出所要表达的内容
例题:
查询张三同学的班主任名称:
select manager stu join class on classid=class id where stu.name=‘张三’
left join 的使⽤场景:所要选取的内容有的属性为空
class表:
stu表不变
例题: 哪些同学没有班级?
select name where class.id is NULL from stu left join class on classid=class.id join的案例:
两个值做计较,只能出现在同⼀⾏的数据⾥⾯。
employee表:
查询
运⾏
employee AS e1 JOIN employee AS e_m2 ON e1.Managerid=e_m2.id 所得到的表:
SELECT e1.Name FROM employee AS e1 JOIN employee AS e_m2 ON e1.Managerid=e_m2.id where e1.Salary>e_m2.Salary

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。