SQL语句写法:如何一次性从百万条记录中找到希望的数据?

数据库为ACCESS,表名为tables,结构和字段名如下:字段1字段2字段3zd1zd2texts1000020000文字一2100030000文字二310004000... 数据库为ACCESS,表名为tables,结构和字段名如下:
字段1 字段2 字段3
zd1 zd2 texts
10000 20000 文字一
21000 30000 文字二
31000 40000 文字三
41000 50000 文字四
51000 60000 文字五
61000 70000 文字六
...
手头有如下数据需查询:A=23456,13567,67543...(无序数,但数据库中总有大于这些数的列)
请问:如何不用循环的方法一次性查出对应的“文字几”,并按数据A所对应的顺序列出?
(不用循环的方法,循环查询对于百万条数据中查找太耗资源了)
请高手不吝指教。谢谢。
a=23456,13567,67543...这是个数组。
一次性打开数据库,不用循环,但可进行下面查询:
21000 < 23456 < 30000 找出“文字二”
10000 < 13567 < 20000 找出“文字一”
31000 40000 文字三
41000 50000 文字四
51000 60000 文字五
61000 < 67543 <70000 找出“文字六”
并按23456,13567,67543的顺序批量列出“文字二”“文字一”“文字三”

求asp的sql语句。
展开
 我来答
百度网友558cf9f59
2006-11-25 · TA获得超过422个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:306万
展开全部
首先在zd1和zd2上建立索引

Select [texts] from [tables] where (zd1<23456 and zd2>23456) or (zd1< 13567 and zd2>13567) or (zd1<67543 and zd2>67543) ......
上面这样只能在输出的时候按顺序对比排序
Select [texts] from [tables] where (zd1<23456 and zd2>23456)
union
Select [texts] from [tables] where (zd1<13567 and zd2>13567 )
union
Select [texts] from [tables] where (zd1<67543 and zd2>67543)
这样可以直接按顺序输出.但不知道效率怎样..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
OruA
2006-11-24 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:156万
展开全部
sql="select * from tables where zd1 in ("&A&")" '先把这些数据全找出来
rs.open sql,conn,1,1
arr=Split(A,",")

for each num in arr '再按A里的顺序显示
rs.movefirst
do
if rs("zd1")=cint(num) then
response.write rs("zd1")&"对应的文字是"&rs("texts")
Exit Do
end if
loop
next
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
home2001me
2006-11-24 · TA获得超过1072个赞
知道小有建树答主
回答量:993
采纳率:0%
帮助的人:1002万
展开全部
这种方法已经试过了,可以的
方法一,(zd2大于等于23456的按zd2升序第一条记录)
SELECT TOP 1 *
FROM tables
WHERE zd2 >= 23456
ORDER BY zd2

方法二,(zd1小于等于23456的按zd1降序第一条记录)
SELECT TOP 1 *
FROM tables
WHERE zd1 <= 23456
ORDER BY zd1 DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2a2f08fdb
2006-11-24 · TA获得超过476个赞
知道小有建树答主
回答量:1549
采纳率:0%
帮助的人:0
展开全部
从publish 表中取出第 n 条到第 m 条的记录:
SELECT TOP m-n+1 *
FROM publish
WHERE (id NOT IN
(SELECT TOP n-1 id
FROM publish))

SELECT TOP 页大小 *

FROM Table1

WHERE not exists

(select * from (select top (页大小*页数) * from table1 order by id) b where b.id=a.id )

order by id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2006-11-25
展开全部
可惜我也不会,只能帮顶。
楼主的意思应该是一次性从百万条数据库中(形式如下)
10000 20000 文字一
21000 30000 文字二
31000 40000 文字三
41000 50000 文字四
51000 60000 文字五
61000 70000 文字六
查询到大于或等于下面这个数组的单个数的记录啊:
23456,13567,67543...
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式