我正在为我正在处理的wordpress主题构建一个队列插件。我使用一个单向链表来完成这个任务。每行在数据库中都有一个“previous\u item\u id”列,它指向应该在它前面打印的行!需要巫师的命令,哈哈,谢谢
当前数据库表:
ID EMAIL PREVIOUS_ITEM_ID
1 test@gmail.com NULL
2 test2@gmail.com 1
3 test3@gmail.com 4
4 test4@gmail.com 2
5 test5@gmail.com 3
如何编写使用orderby来获取下一行的sql语句 previous_item_id
这样地:
第一项应该没有 previous_item_id
(这是第一个)
第二个项应该有1作为上一个\u项\u id
第三项应该有2作为上一项的id
第四项应该有3作为上一个\u项\u id
你基本上把空的第一行作为 previous_item_id
然后根据id递归地获取下一行。
order by的输出应打印:应打印的内容:
test@gmail.com
test2@gmail.com
test4@gmail.com
test3@gmail.com
test5@gmail.com
4条答案
按热度按时间prdp8dxp1#
幸运的是,您不需要递归,因为所有记录都是相关的。如果有其他键,只需将它们添加到where。
sauutmhj2#
可以使用相关子查询获取上一个项id:
2jcobegt3#
使用
case expression
例如:ftf50wuq4#
这是做不到的。底层数据结构是一个任意链表。order by需要一个表达式来对数据结构中的项进行排序。在任意链表中,此表达式不存在。
请注意,部分问题在逻辑上不正确。
在任意链表中,键不一定是连续的升序。