Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在表中查找下一条记录。约会一段时间后。Sql查询_Mysql_Sql_Database - Fatal编程技术网

Mysql 在表中查找下一条记录。约会一段时间后。Sql查询

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',

看,我有一个表,它的字段,我在下面写道。查询后应为一条记录。一段最短的时间。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', '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'