我有一个看起来像这样的架构
id, time, child_id
所以像
这样的东西1, 15, 2
2, 19, nil
3, 20, 5
4, 1, nil
5, 100, nil
我需要区分父母及其孩子的时间
所以对于上述数据,结果将是
id | time_difference
-------------------
1 | 4
3 | 80
所以如果一行有一个孩子,它会花费孩子的时间并从父母那里减去它。假设孩子没有自己的孩子(一排是父母或孩子)
答案 0 :(得分:4)
由于您只有一个级别的父/子,这可以通过自我加入来完成:
select p.id,
c.time - p.time as time_difference
from the_table p
join the_table c on c.id = p.child_id
where p.child_id is not null;
SQLFiddle:http://sqlfiddle.com/#!2/e882e/1
答案 1 :(得分:0)
这种方法可以让你选择差异的时间单位,比如你想要你的时差,以秒,分,小时为单位。
mysql 有一个时间差异的问题,这个问题从很久以前就没有修复过。:
Select
a.id, Time_To_Sec(b.time) - Time_To_Sec(a.time) As time_difference
From your_table a Left Outer Join
your_table b On a.id = b.child_id
Group By 1