我有一个订单表和一个更新表,它们通过一对多(更新)关系连接到订单。我正在尝试选择过去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)