我有这样的桌子
id | name | registration date
-----------------------------
1 | ABC | 2018-01-01
2 | DEF | 2018-01-02
3 | GHI | 2018-01-06
4 | JKL | 2018-01-07
5 | MNO | 2018-01-09
我想创建一个表,其中包含人名、注册日期和在他之后注册的人的姓名。
所以我希望结果表如下所示:
name | registration date | next person
---------------------------------------
ABC | 2018-01-01 | DEF
DEF | 2018-01-02 | GHI
GHI | 2018-01-06 | JKL
JKL | 2018-01-07 | MNO
MNO | 2018-01-09 | -
在 SQL 中实现这一目标的最有效方法是什么?
先感谢您
你需要subquery
:
select *, (select name
from table
where id > t.id
order by id
limit 1
) as next_person
from table t;
但是,您没有标记 any DBMS
,所以我选择了subquery
withlimit
子句,但有些DBMS
没有限制子句,例如SQL Server
so useTOP
子句:
在 SQL Server 中,您可以使用LEAD()
函数:
select *, lead(name) over (order by id) as next_person
from table t;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句