access与sql查询语句转换注意事项
access与sql查询语句转换注意事项
1、--例 等待1 小时2 分零3 秒后才执行SELECT 语句
waitfor delay 01:02:03
select * from employee
2、--例 等到晚上11 点零8 分后才执行SELECT 语句
waitfor time 23:08:00
select * from employee
3、UPDATE语句对比:
SQLSERVER中更新多表的UPDATE语句:
UPDATE Tab1 SET =
FROM Tab1 a,Tab2 b
WHERE a.ID = b.ID;
同样功能的SQL语句在ACCESS中应该是
UPDATE Tab1 a,Tab2 b SET =
WHERE a.ID = b.ID;
即:ACCESS中的UPDATE语句没有FROM子句,所有引用的表都列在UPDATE关键字后.
上例中如果Tab2可以不是一个表,而是一个查询,例:
UPDATE Tab1 a,(Select ID,Name From Tab2) b
SET =
WHERE a.ID = b.ID;
4、访问多个不同的ACCESS数据库-在SQL中使用In子句:
Select a.*,b.* From Tab1 a,Tab2 b In @#db2.mdb@# Where a.ID=b.ID;
上面的SQL语句查询出当前数据库中Tab1和db2.mdb(当前文件夹中)中Tab2以ID为关联的所有记录.
缺点-外部数据库不能带密码.
5、在ACCESS中访问其它ODBC数据源
下例在ACCESS中查询SQLSERVER中的数据
SELECT * FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL
Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;] 外部数据源连接属性的完整参数是:
[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]
其中的DRIVER=driver可以在注册表中的
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\
access与sql查询语句转换注意事项
中找到
6、ACCESS支持子查询
ACCESS支持外连接,但不包括完整外部联接,如支持
LEFT JOIN 或 RIGHT JOIN
但不支持
FULL OUTER JOIN 或 FULL JOIN
7、ACCESS中的日期查询
注意:ACCESS中的日期时间分隔符是#而不是引号
Select * From Tab1 Where [Date]>#2002-1-1#;
在DELPHI中我这样用
SQL.Add(Format(
@#Select * From Tab1 Where [Date]>#%s#;@#,
[DateToStr(Date)]));
8、ACCESS中的字符串可以用双引号分隔,但SQLSERVER不认,所以为了迁移方便和兼容,建议用单引号作为字符串分隔符.
9、Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃
10、Inser Into …..Select …From 语句:
在ACCESS中以下语句
INSERT INTO PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,
Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index)
(SELECT 00201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment, Acc_Pro,acc_type,Sub_id_flag,acc_index
FROM PubSubJectAcc WHERE PubSubJectAcc.co_type='03')
中后面"(select 200201******.co_Type='03')"中的小括号("(",")")必须去掉才能执行,如下:
INSERT INTO PubSubJectAccCopys(Copy_id,Acc_id,Acc_Pid,
Acc_name,acc_short,Acc_Comment,Acc_Pro,acc_type,Sub_id_flag,acc_index)
SELECT 200201,Acc_id,Acc_Pid,Acc_name,acc_short,Acc_Comment, Acc_Pro,acc_type,Sub_id_flag,acc_index
FROM PubSubJectAcc WHERE PubSubJectAcc.co_type='03'
access与sql查询语句转换注意事项
在SQL SERVER 中都可以
11、Inner Join 语句1
StrSql:='select er_id,er_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=c.copy_id) on er_id=er_id
Where er_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';
应该改为
StrSql:='select er_id,er_opcode,b.copy_name from sysuser a inner join (syscopysuser c inner join syscopys b on c.copy_id=d.copy_id) on er_id=er_id
where er_opcode=''' +EdtUserOpCode.text+''' And copy_name='''+Tmpcopyname +'''';
该行代码的检索条件错误:应该把C.copy_id=C.Copy_id 改为c.copy_id=d.copy_id
注:两种写法都能在SQL-SERVER中运行,但c.copy_id=C.copy_id在ACCESS中不能运行
12、 Inner Join 语句2
StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.curcopy_flag=1 and a.copy_id=b.copy_id where er_id=' + '''' +TmpPubUserID+ '''';
该为
StrSql:='select copy_year,copy_name,a.copy_id from SysCopys a inner join SysCopysUser b on a.copy_id=b.copy_id where a.curcopy_flag=''1'' and er_id=' + '''' +TmpPubUserID+ '''';
注:两种写法都能在SQL-SERVER中运行,但第一种在ACCESS中不能运行
access与sql查询语句转换注意事项
13、 Inner Join语句3
SQl server 中可以执行以下语句
'SELECT distinct sysoption.opti_id,sysoption.opti_name,
sysoption.opti_code,sysroleoption.opti_sort
From sysoption inner join sysroleoption
ON sysoption.opti_id=sysroleoption.opti_id
AND sysroleoption.role_id=:roleid'
但ACCESS中不能,只能
'SELECT distinct sysoption.opti_id,sysoption.opti_name,
sysoption.opti_code,sysroleoption.opti_sort
From sysoption inner join sysroleoption
ON sysoption.opti_id=sysroleoption.opti_id
Where sysroleoption.role_id=:roleid'
查询第X页,每页Y条记录
最基本的处理方法(原理):
如果表中有主键(记录不重复的字段也可以),可以用类似下面的方法,当然y,(x-1)*y要换成具体的数字,不能用变量:
select top y * from 表 where 主键 not in(select top (x-1)*y 主键 from 表)
正点,就是这句话,立刻用上。
打印一下sql语句:SELECT TOP 20 * FROM tb_news WHERE nid NOT IN(SELECT TOP 0 nid FROM tb_news)
再打印结果数组, 返回结果为空,晕死。要是mysql就可以用phpmyadmin测试一下,但现在是access,找什么测试呀,算了,还是到群里问问,问了白问,不是不理我,就是说语句有问题。真是大哥来的,语句怎么会有问题的呢!!!汗一个
无耐之下,继续GG,无意之下,居然给我发现这么一个信息:
关于定义access分页的问题
如果为第一页
a=0
第二页 a=10
但是为何a=0不能辨认出来。而sqlserver可以。大家有其他方式来实现吗? 啊,原来真凶在这里,当第一页的时候,是不能出现结果的, …… 此处隐藏:4174字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析




