Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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中获取不匹配条件的最新记录_Mysql - Fatal编程技术网

在mysql中获取不匹配条件的最新记录

在mysql中获取不匹配条件的最新记录,mysql,Mysql,我想得到最新的记录,即使没有匹配MYsql中的条件 例如,我希望按产品类型分组选择2013-01-20的数据,但它不符合此条件,因此它将获得这些产品类型的最新日期(2013-01-19或2013-01-15) 结果应如下所示: ID Type Date 1 2 2013-01-20 2 2 2013-01-20 4 3 2013-01-19 5 4 2013-01-16 对于结果,我想结合2013-01-20年的数据和其他产品的最新数据 最后

我想得到最新的记录,即使没有匹配MYsql中的条件

例如,我希望按产品类型分组选择2013-01-20的数据,但它不符合此条件,因此它将获得这些产品类型的最新日期(2013-01-19或2013-01-15)

结果应如下所示:

ID  Type  Date
1   2     2013-01-20
2   2     2013-01-20
4   3     2013-01-19
5   4     2013-01-16
对于结果,我想结合2013-01-20年的数据和其他产品的最新数据

最后,我们只能得到这些产品类型的最新日期

在MYSQL中如何做到这一点


问候。

我想这就是你想要的:

SELECT p.*
FROM product_type p
JOIN (SELECT Type, MAX(Date) maxdate
      FROM prodct_type
      GROUP BY Type) m
ON p.Type = m.Type and p.Date = m.maxdate
m
子查询查找每种类型的最新日期。然后,联接将查找该日期每种类型的所有行

要筛选出条件,请在子查询中使用HAVING子句:

SELECT p.*
FROM product_type p
JOIN (SELECT Type, MAX(Date) maxdate
      FROM prodct_type
      GROUP BY Type
      HAVING maxdate != '2013-01-20') m
ON p.Type = m.Type and p.Date = m.maxdate
或主查询中的WHERE子句:

SELECT p.*
FROM product_type p
JOIN (SELECT Type, MAX(Date) maxdate
      FROM prodct_type
      GROUP BY Type) m
ON p.Type = m.Type and p.Date = m.maxdate
WHERE maxDate != '2013-01-20'

您可以通过聚合数据以获得最长日期,然后将此信息连接回原始表来完成此操作:

select t.id, t.type, t.date
from t join
     (select type, max(date) as maxdate
      from t
      group by type
     ) tsum
     on t.type = tsum.type and t.date = tsum.maxdate
order by id;

请发布您的尝试。如果我们设置日期条件日期=2013-01-20,但我们也列出了其他产品类型的最新数据。那么如何在SubjectQuery中实现这一点呢?我不明白你所说的“设置日期条件”是什么意思?你的意思是你只需要该日期的结果,而不是使用每种类型的最新日期?你不需要子查询或联接,只需要一个普通的WHERE子句。我想筛选条件date=2013-01-20,但其他不等于此条件的产品类型,我也想获得这些产品类型的最新数据。明白了吗?所以你不想在你的例子中的结果中得到类型1或2的行?
select t.id, t.type, t.date
from t join
     (select type, max(date) as maxdate
      from t
      group by type
     ) tsum
     on t.type = tsum.type and t.date = tsum.maxdate
order by id;