Mysql 如何使用sql获取同一表中某一列在特定日期后的所有值
有一个包含值的db表 表:考试Mysql 如何使用sql获取同一表中某一列在特定日期后的所有值,mysql,sql,select,group-by,aggregate,Mysql,Sql,Select,Group By,Aggregate,有一个包含值的db表 表:考试 name department result date mark cse pass 2019-03-04 10:20:11.000 leo cse pass 2019-03-05 10:20:11.000 stan cse fail 2019-03-06 10:20:11.000 mark
name department result date
mark cse pass 2019-03-04 10:20:11.000
leo cse pass 2019-03-05 10:20:11.000
stan cse fail 2019-03-06 10:20:11.000
mark cse fail 2019-03-07 10:20:11.000
leo cse pass 2019-03-08 10:20:11.000
stan cse fail 2019-03-09 10:20:11.000
mark cse pass 2019-03-10 10:20:11.000
leo cse pass 2019-03-11 10:20:11.000
stan cse pass 2019-03-12 10:20:11.000
mark cse pass 2019-05-12 10:20:11.000
使用sql查询用户上次失败日期后的值,如果用户未通过,则忽略其数据
mark cse pass 2019-03-10 10:20:11.000
mark cse pass 2019-05-12 10:20:11.000
stan cse pass 2019-03-12 10:20:11.000
试过这个
select exam.*
from exam
where exam.date > (select max(exam.date)
from exam
where exam.name = exam.name and exam.result = 'fail'
);
这应该对你有用
SELECT e1.*
FROM exam e1
INNER JOIN
(
SELECT name, max(date) MaxDate
FROM exam
WHERE result = 'fail'
GROUP BY name
) e2 on e1.name = e2.name and e1.date > e2.MaxDate
ORDER BY name
这是你的电话号码
SQL是正确的,但需要为相关子查询中的表名提供别名
演示:这是否回答了您的问题@艾萨克,这是同一张桌子上的。PL checkYes,但是您引用了它两次,就好像它是两个表一样。我是sql新手,正在尝试如何做到这一点。好吧,可能相关子查询不是解决方法。正如您将了解到的,有许多不同的方法。你必须去做对你的处境有意义的事情,并且你理解。
select * from exam tab1
where tab1.exam_date > (select max(tab2.exam_date)
from exam tab2
where tab1.name = tab2.name and tab2.result = 'fail'
);