我有一个表,其中有3个字段,即id、filename和prev\u id,用于存储上传的文件
Id | filename | prev_id
---------------------------
1 | file1 | NULL
2 | file2 | 1
3 | file3 | 2
4 | file4 | NULL
5 | file5 | 4
6 | file6 | 5
file3是最新上传的文件,而其他文件则是上一个用prev\u id标注的文件。我需要一个查询来列出file3以前的文件。像wise一样,另一个新上传的文件是file6。那什么时候
http://www.sqlfiddle.com/#!9/0e88c0/1号
预期产量
文件3以前的文件列表
Id | filename
------------
1 | file1
2 | file2
文件6以前的文件列表
Id | filename
------------
4 | file4
5 | file5
3条答案
按热度按时间m2xkgtsf1#
基于你方提供的(原始)样品
您可以使用自连接,例如:
http://www.sqlfiddle.com/#!9月9日EC606/21
a表重新运行file3的prev\u id,b表返回满足查询条件的值
gudnpqoy2#
第一种方法是列出所有id小于
file3
正如你所说,它们已经分类了。另一种方法是:(如果上传的文件有很多以前的记录,你可以限制它们)
xuo3flqw3#
这将为您提供结果,包括
file3
```select t1.id, t1.fname, @pv := t1.prev_id prev_id
from (select * from test_table order by id desc) t1
join (select @pv := 3) tmp // 3 is the id of file3
where t1.id = @pv;