0
我有一个包含日期范围的表。我想寻找这些范围之间的差距。 我已经知道我可以将连接表留给自己并计算其差异。在连接表中排序行mysql
当前表:
date_begin date_end
2010-08-01 2010-08-15
2010-08-16 2010-08-30
2010-08-31 2010-09-12
2010-10-01 2010-10-15
我想:
date_begin date_end - date_begin2 DATEDIFF(date_begin2 - date_end)
2010-08-01
2010-08-01 2010-08-15 2010-08-16 ...
2010-08-16 2010-08-30 2010-08-31 ...
2010-08-31 2010-09-12 2010-10-01 ...
2010-10-01 2010-10-15
我用下面的查询:
SELECT pay1.date_begin, pay1.date_end,
pay2.date_begin, pay2.date_end, DATEDIFF(pay2.date_begin, pay1.date_end)
FROM `payment_employees` AS pay1
LEFT JOIN `payment_employees` AS pay2 ON pay2.date_begin > pay1.date_end
GROUP BY pay1.date_begin
ORDER BY pay1.date_begin ASC
但结果是
pay1.date_begin date_end pay2.date_begin date_end difference
2010-08-01 2010-08-15 2010-08-31 2010-09-12 16 wrong
2010-08-16 2010-08-30 2010-08-31 2010-09-12 1 correct
2010-08-31 2010-09-12 2010-10-01 2010-10-15 19 correct
2010-10-01 2010-10-15 NULL NULL
如果我删除GROUP BY,我可以看到结果中有正确的行。我无法弄清楚如何得到它们。
有没有办法在加入之前对表格排序?
是的。我想我会用子查询来做些事情。谢谢 – undsoft 2010-09-17 10:55:56