如何选择每个上载中缺少记录的表的行

时间:2019-05-15 17:43:02

标签: mysql sql database select

请有人帮助我进行MYSQL Select查询,其中在给定示例中,我以两个不同的时间间隔(01/01/2019和02/01/2019)更新表,并且我应该能够从中追踪丢失的更新以前的上传(即2019年1月1日)

S.No    Emp Name    Update Date
1   Test 1  01/01/19
2   Test 2  01/01/19
3   Test 3  01/01/19
4   Test 1  02/01/19
5   Test 2  02/01/19

在上面的示例中,我期望查询结果为

3, Test 3, 01/01/2019 

要运行MYSQL查询语法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用NOT EXISTS查找缺少更新的行:

select t.*
from tablename
where 
  t.updatedate = '2019-01-01'
  and not exists (
    select 1 from tablename
    where empname = t.empname and date = '2019-01-02'
  )

答案 1 :(得分:0)

如果您要在一天中更新而不是第二天更新的行:

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.empname = t.empname and
                        t2.date = t.date + interval 1 day
                 ) and
      exists (select 1
              from t t2
              where t2.date = t.date + interval 1 day
             );

第一个子句检查empname在第二天是否不存在。第二步检查是否确实存在某些东西,以防止在最近一天返回所有内容。

您可以添加一个where子句以将外部查询限制为感兴趣的一天或几天。