如何选择外键子行早于某个日期的所有父行


How can I select all parent rows with a foreign key child row older than a certain date?

我有一个订单表和一个更新表,它们通过一对多(更新)关系连接到订单。我正在尝试选择过去24小时内未更新的所有订单。

这是updates表格(在我头顶上):

id INT PRIMARY KEY AUTO INCREMENT,
order_id INT NOT NULL ,
update VARCHAR(255) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
foreign key (order_id) REFERENCES orders(id)

orders表:

id INT PRIMARY KEY AUTO INCREMENT,
enabled TINYINT(1) NOT NULL DEFAULT 0,
reference VARCHAR(10) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

如何返回所有已启用、尚未更新或最近更新时间超过一天的订单?(我可以使用纯MySQL,或者最好使用Laravel的Eloquent ORM。)

谢谢。

我会做一个NOT EXISTS,以返回没有最近更新的订单:

select * from orders o
where enabled = 1
  and not exists (select 1 from updates u
                  where u.order_id = o.id
                    and u.created_at >= NOW() - INTERVAL 1 DAY)