联合索引ABC,现在有个执行语句是A = XXX and C < XXX,索引怎么走根据最左匹配原则,A可以走联合索引,C不会走联合索引,但是C可以走索引下推
两个事务update同一条数据会发生什么
当事务 A 进行 update 的时候会记录加 X 型行级锁,如果事务 B 执行 update 的时候,发现记录已经加了 X 型行级锁之后,就会进入阻塞状态,因为发生了写写冲突。事务 B 会阻塞到到事务A 提交事务之后,因为事务提交之后锁才会释放。
sql题:给学生表、课程成绩表,求不存在01课程但存在02课程的学生的成绩
可以使用SQL的子查询和LEFT JOIN或者EXISTS关键字来实现,这里我将展示两种不同的方法来完成这个查询。
假设我们有以下两张表:
Student 表,其中包含学生的sid(学生编号)和其他相关信息。
Score 表,其中包含sid(学生编号),cid(课程编号)和score(分数)。
SELECT s.sid, s.sname, sc2.cid, sc2.score
FROM Student s
LEFT JOIN Score AS sc1 ON s.sid = sc1.sid AND sc1.cid = '01'
LEFT JOIN Score AS sc2 ON s.sid = sc2.sid AND sc2.cid = '02'
WHERE sc1.cid IS NULL AND sc2.cid IS NOT NULL;
SELECT s.sid, s.sname, sc.cid, sc.score
FROM Student s
JOIN Score sc ON s.sid = sc.sid AND sc.cid = '02'
WHERE NOT EXISTS (
SELECT 1 FROM Score sc1 WHERE sc1.sid = s.sid AND sc1.cid = '01'
);