Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 重新排列表中值的位置_Mysql_Date - Fatal编程技术网

Mysql 重新排列表中值的位置

Mysql 重新排列表中值的位置,mysql,date,Mysql,Date,我正在使用MYSQL。我有一个表,其中包含计划的开始日期和结束日期 | StartDate | FinishDate | |Feb 1, 2016 11:50 AM |Feb 2, 2016 3:37 PM | |Feb 2, 2016 4:29 PM |Feb 3, 2016 8:16 PM | |Feb 3, 2016 8:17 PM |Feb 3, 2016 8:34 PM | 我希望做的是得

我正在使用MYSQL。我有一个表,其中包含计划的开始日期和结束日期

    |      StartDate         |    FinishDate      |
    |Feb 1, 2016 11:50 AM    |Feb 2, 2016 3:37 PM |
    |Feb 2, 2016 4:29 PM     |Feb 3, 2016 8:16 PM |
    |Feb 3, 2016 8:17 PM     |Feb 3, 2016 8:34 PM |
我希望做的是得到没有时间表条目的日期。 我想到的最简单的方法是生成一个新表,其中FinishDate和StartDate中的值将以这种格式重新排列(第一行第二列中的FinishDate值将是第一行第一列中的值,而第二行第一列中的StartDate值将传输到第一行第二列,依此类推):

期望输出 未经分配:

    |      StartDate         |    FinishDate      |
    |Feb 2, 2016 3:37 PM     |Feb 2, 2016 4:29 PM |
    |Feb 3, 2016 8:16 PM     |Feb 3, 2016 8:17 PM |
    |Feb 3, 2016 8:34 PM     |  -                 |

如何实现所需的输出?非常感谢您。

MySql没有窗口函数,因此生成这种结果总是很棘手。一种可能是:

SELECT
  t1.FinishDate StartDate
, MIN(t2.StartDate) FinishDate

FROM table t1
LEFT JOIN table t2 ON t2.StartDate > t1.FinishDate
GROUP BY 1

如果您的日期列已编入索引,且要处理的行数相对较少,则此操作将非常有效。

您的问题非常不清楚。请尝试以更清晰的方式格式化示例数据。源表中是否还有其他列?