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

MySQL多外键指向同一主键,求时间对的时间差

计算Linked表中时间戳对的时间差

你只需要两次关联Points表即可解决这个问题——因为Linked的prevID和nextID都指向Points的主键ID,给Points表起两个不同的别名,分别关联这两个外键,就能同时获取一对时间戳,再计算差值。

示例SQL(MySQL)

SELECT
    l.ID AS linked_id,
    p_prev.TStamp AS prev_timestamp,
    p_next.TStamp AS next_timestamp,
    -- 计算秒级时间差,可替换为MINUTE/HOUR/DAY等单位
    TIMESTAMPDIFF(SECOND, p_prev.TStamp, p_next.TStamp) AS time_diff_seconds,
    TIMESTAMPDIFF(MINUTE, p_prev.TStamp, p_next.TStamp) AS time_diff_minutes
FROM
    Linked l
INNER JOIN
    Points p_prev ON l.prevID = p_prev.ID
INNER JOIN
    Points p_next ON l.nextID = p_next.ID;

关键说明

  • 用p_prev和p_next作为Points表的两个别名,分别对应Linked表中的前序和后序记录
  • TIMESTAMPDIFF是MySQL的时间差计算函数,第一个参数指定时间单位(如SECOND、MINUTE),后面两个参数是起始和结束时间
  • 如果Linked表中prevID或nextID可能为NULL,可以把INNER JOIN换成LEFT JOIN,这样即使某一端没有对应Points记录,也能返回结果(此时时间差会是NULL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:30:54