MYSQL从具有交错ID的表中选择行

MYSQL从具有交错ID的表中选择行,mysql,Mysql,我的桌子是这样的: field ----- a b c d e f ... 我想得到的是来自同一个表的查询,该表显示了以下结果: field fieldnew -------------- a b b c c d d e e f f ... 你能给我一个关于你的建议吗?谢谢在MySQL 8.0中,您可以使用窗口功能 选择字段,滞后(字段,1)超过(按字段排序)作为字段新建 从表名开始; 对于MySQL 5.7,您可以使用随每行更新的变量: S

我的桌子是这样的:

field
-----
a
b
c
d
e
f
...
我想得到的是来自同一个表的查询,该表显示了以下结果:

field fieldnew
--------------
a     b
b     c
c     d
d     e
e     f
f     ...

你能给我一个关于你的建议吗?谢谢

在MySQL 8.0中,您可以使用窗口功能

选择字段,滞后(字段,1)超过(按字段排序)作为字段新建
从表名开始;
对于MySQL 5.7,您可以使用随每行更新的变量:

SET@lag_field='';
选择@lag\u字段作为字段新建,@lag\u字段:=字段作为字段
从表名开始;
请注意,列的顺序很重要:
fieldnew
必须是第一列,因为保存前一行值的变量由第二列更新


如果不希望
fieldnew
中的第一行为空,可以在查询末尾添加
HAVING fieldnew'
。此外,如果数据是数字,则需要将
@lag_字段
初始化为一个数字,例如-1。

欢迎使用堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后查看SQL相关问题。您好,使用MySQL 8.0就可以了。关于MySQL 5.7.x我如何才能得到相同的结果?谢谢,我已经更新了答案,加入了MySQL 5.7的解决方案。将来,您应该指定问题具体涉及的版本,否则人们通常会认为您使用的是最新版本。