Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> 查询  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/VS.NET2005
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 AppleVB
 我家网
 911静态资料2
 a9 BBS
 911搜什么
 MCSE技术论坛
 CSharp911.net
 BBS新闻列表
 911静态资料
 911搜C S D N
 911搜全国公交线路
 Office中国
 Java 编程资料站
 Access开发在线
 Access软件网
 CSDN
 MS Support
 上海朋扬电脑
 access爱好者
 交流中心
 ezlavie
 艾赛思俱乐部
 设计在线
 搜CSDN V2
 搜CSDN V3
 oaup
 宇宙网络
 
访问人次
 1004219
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

关于IN子句用参数代替时,多参数该如何处理?还要按参数排序又要如何处理?

作者:cg1  摘自:access911.net  :cg1  更新日期:2004-8-11  浏览人次:

 

问题:

关于IN子句用参数代替时,多参数该如何处理?

如何编写删除id where in(1,2,3,4,5) 的查询 
DELETE Article.ID
FROM Article
WHERE (((Article.ID) In ([@IDs])));

IDs的值单独为一个的时候可以删除,两个以上的值就不行了

 

回答:


DELETE Article.ID
FROM Article
WHERE (((Article.ID) In ([@IDs])));

参数只允许有一个,如果你在[@IDs]里面填写 1,2,3仍然被作为一个参数,而不是3个。

如果你要达到你需要的效果,必须用 VBA 来组织 jet SQL 语句

dim strsql as string
dim strIn as string
strIn="1,2,3"
strsql="DELETE Article.ID FROM Article WHERE Article.ID In (" & strIn & ")" 
currentproject.connection.execute strsql


在 SQL SERVER 中也会有类似的问题,这里也同样有解决方法
declare @sql nvarchar(200)
declare @table_name nvarchar(200)
declare @in_string nvarchar(200)

select @table_name='table1'
select @in_string='11,34,55,6,7,8'

set @sql='select * from ' + @table_name + ' where fieldname in (' + @in_string + ')'
execute(@sql)



 


问题:

数据库排序问题!有记录集,如何显示给定ID顺序排序以及显示相关记录!
如我有一组数据array_id="50,23,1,56,35,80"
要求从数据库中显示相应的记录并按照相应顺序显示记录!如何才能实现?我用的是ACCESS数据库。
关键是如何按照 array_id="50,23,1,56,35,80" 这个ID顺序排序,取出记录是可以用 in 语句,如何得到排序是:
Id  字段1
50  内容2
23  内容3
1   内容4
56  内容5
35  内容6
80  内容7

 

回答:

array_id 可以生成一个字符串来组织 SQL 的 IN 子句
select * from 表名 where 字段 in (50,23,1,56,35,80) order by 字段


但是注意!该结果不会按照
Id  字段1
50  内容2
23  内容3
1   内容4
56  内容5
35  内容6
80  内容7
这样的顺序来排序的。IN 子句只是用于获取记录,不是用来排序的,如果你一定要排序可以用临时表解决
临时表结构类似如下:
ID,OrderID
50  1
23  2
1   3
56  4
35  5
80  6

select * from 表名 innser join 临时表 on 表名.id= 临时表.id order by 临时表.OrderId


当然,如果你不用临时表,而用 SWITCH 或者 IIF 函数来生成 Order By 顺序也可以,但是那样在记录稍多时效率很差。

 


本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何解决C#因无“可选参数”导致EXCEL开发困难?
     组合框的行来源如何使用参数存储过程?
     如何写表名或者字段名是变量的参数查询?
     一个常用的组合多条件查询 WHERE 子句的函数
     如何在窗体间传递(包括发送、接收、回传)参数
     GetOption以及SetOption的英文参数
     T-SQL、VBA、JET SQL中参数的构建
     如何构建参数查询?
     ado构建参数一例
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利