0

即使不匹配 MYsql 中的条件,我也想获取最新记录。

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

Coding:

Select date from tblproducttype where 
date=(select max(date) from tblproducttype group by type) where date='2013-01-20'


Table product type

ID  Type  Date
1   2     2013-01-20
2   2     2013-01-20
3   2     2013-01-14
4   3     2013-01-19
5   4     2013-01-16
6   4     2013-01-13

结果应如下所示:

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 中做到这一点?

问候。

4

2 回答 2

0

我认为这就是你想要的:

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'
于 2013-08-25T03:01:31.337 回答
0

您可以通过聚合数据来获取最大日期,然后将此信息连接回原始表来执行此操作:

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-08-25T03:02:23.937 回答