Mysql SQL以获取单行中的今天和昨天记录
我们有一个Mysql SQL以获取单行中的今天和昨天记录,mysql,Mysql,我们有一个log表,该表由以下列组成:作业名称、开始时间、结束时间、状态、源计数、目标计数、拒绝计数、错误计数等 每个记录将包含有关每个作业的信息。 我的结果应该是作业名称、开始dt、结束dt、状态、源计数、目标计数、拒绝计数、错误计数(今天输入)、源计数、目标计数、拒绝计数、错误计数(昨天计数) 我们需要有今天的记录计数,以及今天在一行。 我们目前正在使用下面的查询获取记录 select * from logtable where start dt=current_date 任何人都可以帮助
log
表,该表由以下列组成:作业名称、开始时间、结束时间、状态、源计数、目标计数、拒绝计数、错误计数
等
每个记录将包含有关每个作业的信息。
我的结果应该是作业名称、开始dt、结束dt、状态、源计数、目标计数、拒绝计数、错误计数(今天输入)、源计数、目标计数、拒绝计数、错误计数(昨天计数)
我们需要有今天的记录计数,以及今天在一行。
我们目前正在使用下面的查询获取记录
select * from logtable where start dt=current_date
任何人都可以帮助我使用SQL来获得上述结果。好的,基于您的更新的新anser:
select logToday.`job name`,
logToday.`start time`,
logToday.`end time`,
logToday.status,
logToday.`source count`,
logToday.`target count`,
logToday.`reject count`,
logToday.`error count`,
logYesterday.`source count`,
logYesterday.`target count`,
logYesterday.`reject count`,
logYesterday.`error count`
from logtable logToday
join logtable logYesterday on logYesterday.`start time` = subdate(current_date, 1)
where logToday.`start time` = current_date;
以上内容应该适合你。
您说列的名称为“开始时间”,但在选择中使用“开始时间”
旧答案:
如果您只想将今天和昨天的两行放在同一行上,可以这样做:
select logToday.*, logYesterday.*
from logtable logToday
join logtable logYesterday on logYesterday.startdt = subdate(current_date, 1)
where logToday.startdt = current_date;
如果我遗漏了什么,请提供更多信息,我将修改答案。您知道如果您运行此查询会发生什么混乱吗?我不确定MySQL是否会执行它。您根据非常奇怪的条件将一个表加入到同一个表中。。。结果列名将重叠…表实际上没有连接,它只是为每个表选择一行,并假设其重叠,这就是使用别名的原因。如果您想要名称为logname的列,只需使用logToday.logname或logDayed.logname将它们分开。但如果我遗漏了什么,我总是喜欢被纠正,这样我就可以学到新的东西。请澄清你的问题,这很难理解——“今天和今天”。。。对于这个问题,给出日期列的数据类型是非常重要的——是Date还是DATETIME。最好为您的表编写CREATETABLE查询。对不起,今天和昨天一样。start\u dt、end\u dt是时间戳列