使用mysql中的行从表中获取最新日期

使用mysql中的行从表中获取最新日期,mysql,sql,greatest-n-per-group,Mysql,Sql,Greatest N Per Group,我有两个表:资产和库存 表资产 表存货 当我运行以下mysql查询时: SELECT a.assetnum,a.description,a.user,MAX(b.invdate) as invdate , b.note FROM asset a LEFT JOIN inventory b on a.assetnum=b.assetnum GROUP BY a.assetnum, a.description 我得到的是: 但是,应该是这样的 我的mysql查询有什么问题?有人能帮我

我有两个表:资产库存

表资产

表存货

当我运行以下mysql查询时:

SELECT a.assetnum,a.description,a.user,MAX(b.invdate) as invdate , b.note 
FROM asset a 
LEFT JOIN inventory b on a.assetnum=b.assetnum 
GROUP BY a.assetnum, a.description
我得到的是:

但是,应该是这样的


我的mysql查询有什么问题?有人能帮我吗…

你基本上可以在结果中得到一个随机的
注释。你可能需要这样的东西:

 select a.assetnum,a.description,a.model, i.invdate, i.note 
 from inventory i
 join
 (
   select assetnum, max(invdate) max_invdate
   from inventory
   group by assetnum
 ) t on i.assetnum = t.assetnum and
        i.invdate = t.max_invdate
 right join asset a on a.assetnum = i.assetnum

您基本上会在结果中得到一个随机的
注释。你可能需要这样的东西:

 select a.assetnum,a.description,a.model, i.invdate, i.note 
 from inventory i
 join
 (
   select assetnum, max(invdate) max_invdate
   from inventory
   group by assetnum
 ) t on i.assetnum = t.assetnum and
        i.invdate = t.max_invdate
 right join asset a on a.assetnum = i.assetnum

有一种方法可以支持您的“尝试”和“良好尝试”功能:

SELECT a.assetnum,
    MAX(a.description) AS description,
    MAX(a.user) AS user,
    MAX(b.invdate) as invdate, 
    (SELECT i.note FROM inventory i 
     WHERE i.invdate = MAX(b.invdate) AND i.assetnum=a.assetnum) note
FROM asset a 
LEFT JOIN inventory b on a.assetnum=b.assetnum 
GROUP BY a.assetnum

有一种方法可以支持您的“尝试”和“良好尝试”功能:

SELECT a.assetnum,
    MAX(a.description) AS description,
    MAX(a.user) AS user,
    MAX(b.invdate) as invdate, 
    (SELECT i.note FROM inventory i 
     WHERE i.invdate = MAX(b.invdate) AND i.assetnum=a.assetnum) note
FROM asset a 
LEFT JOIN inventory b on a.assetnum=b.assetnum 
GROUP BY a.assetnum

从资产a中,这里缺少一些内容。为了正确的数据库工作,所有表都需要主键您自己的数据是错误的。。。。你是说你想要最后一次约会,那就是20号,正如你的库存表所示,20号有好坏之分,好的东西从哪里来sudden@Tomm最新日期是正确的,但根据我的查询,它将作为库存表的第一行。从库存表的第3行和第4行应该是不好的…从资产a,这里缺少一些东西。为了正确的数据库工作,所有表都需要主键您自己的数据是错误的。。。。你是说你想要最后一次约会,那就是20号,正如你的库存表所示,20号有好坏之分,好的东西从哪里来sudden@Tomm最新日期是正确的,但根据我的查询,它将作为库存表的第一行。从库存表的第三行和第四行应该是不好的…谢谢。。。这几乎是工作。我还希望ghi789在结果中显示“null”,即使库存表中没有invdate值。@MuhammadYusufAhmadShahRudd是,更正。您很好:)@MuhammadYusufAhmadShahRudd我添加了外部连接(
左连接
),以便在结果中也包含空值。我知道当前的解决方案有问题吗?谢谢。。。这几乎是工作。我还希望ghi789在结果中显示“null”,即使库存表中没有invdate值。@MuhammadYusufAhmadShahRudd是,更正。您很好:)@MuhammadYusufAhmadShahRudd我添加了外部连接(
左连接
),以便在结果中也包含空值。我知道当前的解决方案有什么问题吗?