Mysql 要通过比较两个表之间的最大操作日期来获得结果吗

Mysql 要通过比较两个表之间的最大操作日期来获得结果吗,mysql,sql,Mysql,Sql,这是我的mysql代码 SELECT ri.imei , ri.date , ti.date FROM returned_items ri JOIN transfer_items ti ON ri.imei = ti.imei WHERE MAX(ri.date) >= MAX(ti.date) 我有两个表名为返回的\u项和转移\u项 IMEI有多个传输和返回 我想检查IMEI的最新/max returned_items日期是否大于最新/

这是我的mysql代码

SELECT ri.imei
     , ri.date
     , ti.date
 FROM returned_items ri     
  JOIN transfer_items ti  
    ON ri.imei = ti.imei
 WHERE MAX(ri.date) >= MAX(ti.date)
我有两个表名为返回的\u项转移\u项

IMEI有多个传输和返回

我想检查IMEI的最新/max returned_items日期是否大于最新/max transfer_items日期

但此代码生成错误#1111-组函数的使用无效


请给我建议一种获得结果的方法。

您需要添加
group by
子句,也可以使用
having by
而不是
where

select ri.imei, ri.date, ti.date
from returned_items ri
join transfer_items ti on ti.imei = ri.imei
group by ri.imei
having max(ri.date) > max(ti.date)
你应该在加入之前进行聚合。出于性能原因,这一点很重要。在您的情况下,它不会影响结果,但在其他情况下会:

select ri.imei, ri.ri_date, ti.ti_date
from (select ri.imei, max(ri.date) as ri_date
      from returned_items ri
      group by ri.imei
     ) ri join
     (select ti.imei, max(ti.date) as ti_date
      from transfer_items ti
      group by ti.imei
     ) ti
     on ti.imei = ri.imei
having ri.ri_date > ti.ti_date;

请将示例数据添加到您的问题中。请参见备注:这仅在
imei
是主键或唯一键时有效。@TimBiegeleisen,OP没有指定表架构或示例数据,因此假设这是主键,我们只想解决他遇到的错误。让我们改为请OP澄清。这样,这个问题就对其他有类似问题的人有用了problem@IRasel . . . 我理解在这个问题上的投票,但这确实不是回答这个问题的最佳方式。首先,查询的语法不正确。第二,它可能太贵了。没有必要澄清。OP明确指出有多行,因此
imei
不能作为主键。