占位图像 用户ID: 密码: 验证码: 登录 注册     占位图像
 
教育168搜索

a
频道信息
学前教育 基础教育
小学 初中
高中 高等教育
心理学 机械工程
园林 IT教育
办公软件 Director
Authorware 图形图象
FIREWORKS CORELDRAW
Maya PhotoShop
AutoCAD 3D
操作系统 Windows xp
Windows Vista Linux
Windows 2003 Windows 2000
FreeBSD 注册表
网站制作 FLASH
Dreamweaver CSS教程
装修设计 LightScape
装修风水 方案设计
英语 商务外语
素质教育 法制教育
企业培训
最新更新
·SQL语句问题:超过250个
·试验IIS6的HTTP压缩功
·FLASH格式网络广告的缺点
·网站ewebeditor后台
·使用ewebeditor上传

点击排行
·使用ewebeditor上传
·网站ewebeditor后台
·试验IIS6的HTTP压缩功
·FLASH格式网络广告的缺点
·SQL语句问题:超过250个

SQL语句问题:超过250个OR导致查询过于复杂 Access,SQL,OR
发布日期:2007-10-3 20:11:45  浏览:511次
关键字: Sql语句 查询过于复杂 where in

 

页面查询时出现“查询过于复杂!”


这是网上搜集的资料

一个动态字符串数组 A()
A(1)="acdc"
A(2)="aghdc"
A(3)="a2cdc"
A(4)="agh4dc
……
A(250)="ac78dc"
A(251)="a6ghdc
……

查找数据库中字段“name”等于数组A中任意一项的记录

我的笨办法是用一个循环遍历数组生成SQL语句,
select * from DB where name='acdc' or name='aghdc' or …………

在数组A行数小于253的时候,也就是or条件小于253时,SQL语句正常执行,
在数组A行数大于253的时候,SQL语句出错,提示“查询过于复杂!”

请教有什么更高效的办法,并且需要解决“查询过于复杂”这个问题






------------------------------------------------------------------------------------
可以用循环
FOR I=1 TO 255
RR="select * from DB where name=" & A(I) &"'"
SET FF=CURRENTDB.OPENRESCORDSET(RR)
IF FF.EOF
MSGBOX "NO"
ELSE
MSGBOX "YES"
EXIT FOR
END IF
NEXT
-------------------------------------------------------------------------------------- dim strSql as string
strSql="select * from DB where name in('" &join(A,"','") &"')"
……
-------------------------------------------------------------------------------------- access对于or的使用有限制。

可以通过如下方式解决:

(1)把数组的所有元素追加到一个表中,然后用

select * from DB where name in (select 列名 from 表)

(2)用代码动态生成数组元素值的串,使得串的格式类似:

dim str as string
dim strSQL as string
str="'acdc','aghdc','a2cdc'"
strSQL="select * from DB where name in (" & str & ")"


--------------------------------------------------------------------------------------


总结:

str="'acdc','aghdc','a2cdc'" 此代码中如果查询的是数字,则不加引号

 

网站页面参照myshop_course_file.asp

关键字: Sql语句 查询过于复杂 where in

相关信息 用户评论

 

更多评论

验证码:
验证码