我想根据某些条件选择一些行,然后从该集合中取出一个条目,然后从它之前和之后的5行中选择一个条目.
现在,如果桌子上有一个主键(例如主键比目标行的键少5个,比目标行的键多5个),我可以做数字的操作.
所以选择主键为7的行和附近的行:
select primary_key from table where primary_key > (7-5) order by primary_key limit 11; 2 3 4 5 6 -=7=- 8 9 10 11 12
但是,如果我只选择某些行来开始,我会丢失使用主键的数字方法(并且假定键在其顺序上没有任何差距),并且需要另一种方式来获取最近的行,经过一定的目标行.
这种选择的主键输出可能看起来更随机,因此数学定位难以接受(因为某些结果将被过滤掉,例如,其中active = 1):
select primary_key from table where primary_key > (34-5) order by primary_key where active=1 limit 11; 30 -=34=- 80 83 100 113 125 126 127 128 129
请注意,由于条件(例如因为有许多非活动项目)的示例导致的主键中的间隙,我不再获得最接近的5以上和5以下,而是我最接近1以下而最接近的9.
解决方法
原文地址:https://www.jb51.cc/mssql/82556.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。