如何实现以下的数据查找??
现有一表,数据如下:
源表[T]
col1 col2 ID col3 col4
a A 1 400-1 BH
b NULL 2 400-2 NULL
c B 3 400-3 BF
d NULL 4 400-1 NULL
e B 5 400-2 BH
f B 6 400-3 NULL
g CN 7 400-1 NULL
g EN 8 400-1 NULL
f NULL 9 400-3 NULL
x CN 10 400-1 NULL
s EN 11 400-1 NULL
h NULL 12 400-3 NULL
b CN 13 400-5 NULL
f EN 14 400-6 NULL
x CN 15 400-1 NULL
s EN 16 400-1 NULL
b NULL 17 400-3 NULL
v A 18 400-3 BF
在这张表中找出列col4中为BH的行,接着在找出的记录中分两种情况进行进一步的查找。
注意:ID列是已经按从小到大排序,且是唯一的
--第一种情况是col4列的值是BH且col2列的值是A如下
col1 col2 ID col3 col4
a A 1 400-1 BH
--第一种情况查找过程:根据上一记录中col3列的值400-1在往后列col3所有都为400-1的记录,筛选出col2列中最先出现CN或EN的记录。
d NULL 4 400-1 NULL
g CN 7 400-1 NULL
g EN 8 400-1 NULL
x CN 10 400-1 NULL
s EN 11 400-1 NULL
x CN 15 400-1 NULL
s EN 16 400-1 NULL
--第一种情况的最终结果
col1 col2 ID col3 col4
a A 1 400-1 BH
g CN 7 400-1 NULL
--第二种情况稍微有些不同,col4列的值是BH且col2的值是B,如下:
col1 col2 ID col3 col4
e B 5 400-2 BH
--第二种情况查找过程:这里查找的是与400-2相同的记录,而是比400-2要大的所有记录并从中筛选出col2列中最先出现CN或EN的记录。
f B 6 400-3 NULL
f NULL 9 400-3 NULL
b CN 13 400-5 NULL
f EN 14 400-6 NULL
b NULL 17 400-3 NULL
v A 18 400-3 BF
--第二种情况的最终结果
col1 col2 ID col3 col4
e B 5 400-2 BH
b CN 13 400-5 NULL
--最后的结果就是两种情况的结果联合起来
col1 col2 ID col3 col4
a A 1 400-1 BH
g CN 7 400-1 NULL
e B 5 400-2 BH
b CN 13 400-5 NULL
源表[T]
col1 col2 ID col3 col4
a A 1 400-1 BH
b NULL 2 400-2 NULL
c B 3 400-3 BF
d NULL 4 400-1 NULL
e B 5 400-2 BH
f B 6 400-3 NULL
g CN 7 400-1 NULL
g EN 8 400-1 NULL
f NULL 9 400-3 NULL
x CN 10 400-1 NULL
s EN 11 400-1 NULL
h NULL 12 400-3 NULL
b CN 13 400-5 NULL
f EN 14 400-6 NULL
x CN 15 400-1 NULL
s EN 16 400-1 NULL
b NULL 17 400-3 NULL
v A 18 400-3 BF
在这张表中找出列col4中为BH的行,接着在找出的记录中分两种情况进行进一步的查找。
注意:ID列是已经按从小到大排序,且是唯一的
--第一种情况是col4列的值是BH且col2列的值是A如下
col1 col2 ID col3 col4
a A 1 400-1 BH
--第一种情况查找过程:根据上一记录中col3列的值400-1在往后列col3所有都为400-1的记录,筛选出col2列中最先出现CN或EN的记录。
d NULL 4 400-1 NULL
g CN 7 400-1 NULL
g EN 8 400-1 NULL
x CN 10 400-1 NULL
s EN 11 400-1 NULL
x CN 15 400-1 NULL
s EN 16 400-1 NULL
--第一种情况的最终结果
col1 col2 ID col3 col4
a A 1 400-1 BH
g CN 7 400-1 NULL
--第二种情况稍微有些不同,col4列的值是BH且col2的值是B,如下:
col1 col2 ID col3 col4
e B 5 400-2 BH
--第二种情况查找过程:这里查找的是与400-2相同的记录,而是比400-2要大的所有记录并从中筛选出col2列中最先出现CN或EN的记录。
f B 6 400-3 NULL
f NULL 9 400-3 NULL
b CN 13 400-5 NULL
f EN 14 400-6 NULL
b NULL 17 400-3 NULL
v A 18 400-3 BF
--第二种情况的最终结果
col1 col2 ID col3 col4
e B 5 400-2 BH
b CN 13 400-5 NULL
--最后的结果就是两种情况的结果联合起来
col1 col2 ID col3 col4
a A 1 400-1 BH
g CN 7 400-1 NULL
e B 5 400-2 BH
b CN 13 400-5 NULL
...全文
相关推荐
??? ???? ?? ?? ?? ?????_coding_
tekehayii az yek kol monsajem be zaban sade
Bins??_php_
LARGE COLLECTION OF GUIDES 2019
二分法数据查找C语言实现
二分法数据查找C语言实现,只有10%程序员能正确实现二分查找算法--http://news.csdn.net/a/20100423/218099.html
C语言实现顺序表的顺序查找和折半查找
主要为大家详细介绍了C语言实现顺序表的顺序查找和折半查找,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Java数据结构实现折半查找的算法过程解析
主要介绍了Java数据结构实现折半查找的算法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


应用实例

