最近由于某需求,需要对数据库中的数据进行定点查询,具体要求是:
根据某特定时间点,分别查询其前M条数据记录和其后N条数据记录,并将查询结果联合起来按照原数据顺序输出。
MYSQL
语法如下:
SELECT
字段1,
字段2
FROM(
/*
查询出某时间点前指定数量的记录,并按照正序排列
*/
(SELECT
* FROM
(SELECT * FROM table
WHERE 时间<='时间点'
ORDER BY 时间 DESC LIMIT M) AS forward)
UNION ALL
/*
查询出某时间点后指定数量的记录,并按照正序排列
*/
(SELECT
* FROM
(SELECT * FROM table
WHERE 时间>'时间点') AS back
LIMIT 0,N)
/*
将查询结果按照某字段进行排序
*/
ORDER BY 时间
)AS result
/*
将上述查询结果导出到文件中
文件路径为C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/xxx.txt
*/
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/xxx.txt'
/*
每行数据的各字段数据间使用tab键分隔
*/
FIELDS TERMINATED BY '\t'
/*
每行数据的各字段数据不使用任何符号引起
*/
OPTIONALLY ENCLOSED BY ''
/*
每行数据记录自动换行
*/
LINES TERMINATED BY '\n';
利用上述SQL语句就可达到目的,如果您对于实现上述目的有更为简洁或高效的SQL语句,请您指正,谢谢。