Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用sql获取同一表中某一列在特定日期后的所有值_Mysql_Sql_Select_Group By_Aggregate - Fatal编程技术网

Mysql 如何使用sql获取同一表中某一列在特定日期后的所有值

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

有一个包含值的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      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'
               );