You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Links表中不在Works表或插入超24小时的记录

完善后的查询方案

我来帮你搞定这个需求,用LEFT JOIN关联两张表再结合条件判断就能实现,具体SQL语句如下(以MySQL为例,其他数据库的时间函数我会在后面说明):

SELECT l.*
FROM Links l
LEFT JOIN Works w ON l.id = w.link_id -- 请根据你的实际关联字段修改这里,比如如果是link_uuid就换成对应字段
WHERE 
  -- 情况1:记录不在Works表中,直接返回
  w.link_id IS NULL 
  -- 情况2:记录在Works表中,但插入时间超过24小时才返回
  OR (w.link_id IS NOT NULL AND w.insert_time < NOW() - INTERVAL 24 HOUR);

逻辑拆解:

  • LEFT JOIN Works w ON l.id = w.link_id:用左连接保留Links表的所有记录,同时匹配Works表中对应的条目——如果没有匹配项,Works表的字段会是NULL。
  • w.link_id IS NULL:这就是你已经实现的部分,筛选出那些在Works表里没有对应记录的Links数据。
  • (w.link_id IS NOT NULL AND w.insert_time < NOW() - INTERVAL 24 HOUR):针对存在于Works表的记录,只保留插入时间距离当前时间超过24小时的条目。

不同数据库的时间适配:

  • SQL Server:把时间判断改成w.insert_time < DATEADD(HOUR, -24, GETDATE())
  • PostgreSQL:改成w.insert_time < NOW() - INTERVAL '24 hours'
  • Oracle:改成w.insert_time < SYSDATE - 1(因为Oracle里1代表1天,也就是24小时)

内容的提问来源于stack exchange,提问作者Rene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:18:35