Mysql 在表中查找下一条记录。约会一段时间后。Sql查询
看,我有一个表,它的字段,我在下面写道。查询后应为一条记录。一段最短的时间。dateend datestart的开始和结束。我有一张桌子: 广播 行:id、datestart、dateend、namecategory、page 该表包含以下信息:Mysql 在表中查找下一条记录。约会一段时间后。Sql查询,mysql,sql,database,Mysql,Sql,Database,看,我有一个表,它的字段,我在下面写道。查询后应为一条记录。一段最短的时间。dateend datestart的开始和结束。我有一张桌子: 广播 行:id、datestart、dateend、namecategory、page 该表包含以下信息: '1 ', '2012-01-09 13:00:00', '2012-01-09 15:00:00 ',' News', 'N1' '2 ', '2012-01-09 16:00:00', '2012-01-09 17:00:00 ',' News',
'1 ', '2012-01-09 13:00:00', '2012-01-09 15:00:00 ',' News', 'N1'
'2 ', '2012-01-09 16:00:00', '2012-01-09 17:00:00 ',' News', 'N1'
'3 ', '2012-01-09 11:00:00', '2012-01-09 12:00:00 ',' News', 'N2'
'4 ', '2012-01-09 16:00:00', '2012-01-09 18:00:00 ',' News', 'N2'
我可以撤销记录间隔最小的页面吗
查询后应显示:
N1
一般来说,是否有可能实现这样的请求?而仅仅猜测这里没有min是不行的。我不认为仅使用SQL就可以做到这一点。。。否则就太复杂了。在一些脚本中预先计算时间间隔并存储在缓存或类似的东西中可能更好
SELECT
page
FROM
MyTable
ORDER BY
dateend - datestart
LIMIT 1
SELECT
page
, MIN( (SELECT next.datestart - a.dateend
FROM TableX AS next
WHERE next.page = a.page
AND next.datestart >= a.dateend
AND next.id <> a.id
ORDER BY next.datestart ASC
LIMIT 1
)
) AS gap
FROM
TableX AS a
GROUP BY
page
ORDER BY
gap ASC
LIMIT 1
用于显示所有间隙,而不是计算最小间隙:
SELECT
page
, ( SELECT next.datestart - a.dateend
FROM TableX AS next
WHERE next.page = a.page
AND next.datestart >= a.dateend
AND next.id <> a.id
ORDER BY next.datestart ASC
LIMIT 1
) AS gapToNextBroadcast
FROM
TableX AS a
WHERE --- optional for
page = @pageToCheck --- one page only
你的问题内容令人困惑,而你的问题主题似乎毫不含糊。请试着澄清一下你想要什么。他/她需要确定哪一页上的程序之间的间隔最小。在提供的示例中,N1的间隔为1小时,N2的间隔为4小时。“2012-01-09 15:00:00”减去“2012-01-09 16:00:00”1小时。这是根据这个方案应该可以工作的查询。但是有什么额外的字段可以添加一些东西呢?一点东西。此查询在一行中减去一条记录。并计算时间。但我需要计算记录之间的差距。非常感谢你的决定。我如何添加他只查找包含N1的记录的间隔?您可以添加一个WHERE page='N1'