- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQLite 不支持的 SQL 语法总结
TOP
这是一个大家经常问到的问题,例如在 SQLSERVER 中可以使用如下语句来取得记录集中的前十条记录:
SELECT TOP 10 * FROM [index] ORDER BY indexid DESC; 但是这条SQL 语句在SQLite 中是无法执行的,应该改为:
SELECT * FROM [index] ORDER BY indexid DESC limit 0,10; 其中limit 0,10 表示从第 0 条记录开始,往后一共读取 10 条
创建视图(Create View)
SQLite 在创建多表视图的时候有一个BUG,问题如下: CREATE VIEW watch_single AS SELECT DISTINCT
watch_item.[watchid],watch_item.[itemid] FROM watch_item; 上面这条SQL 语句执行后会显示成功,但是实际上除了
SELECT COUNT(*) FROM [watch_single ] WHERE watch_ single.watchid = 1;
能执行之外是无法执行其他任何语句的。其原因在于建立视图的时候指定了字段所在的表名,而SQLite 并不能正确地识别它。所以上面的创建语句要改为:
CREATE VIEW watch_single AS SELECT DISTINCT [watchid],[itemid] FROM watch_item;
但是随之而来的问题是如果是多表的视图,且表间有重名字段的时候该怎么办?
COUNT(DISTINCT column)
SQLite 在执行如下语句的时候会报错:
SELECT COUNT(DISTINCT watchid) FROM [watch_item] WHERE watch_item.watchid = 1;
其原因是SQLite 的所有内置函数都不支持DISTINCT 限定,所以如果要统计不重复的记录数的时候会出现一些麻烦。比较可行的做法是先建立一个不重复的记录表的视图,然后再对该视图进行计数。
外连接
虽然SQLite 官方已经声称LEFT OUTER JOIN 已经实现,但还没有RIGHT OUTER JOIN 和 FULL OUTER JOIN。但是实际测试表明似乎并不能够正常的工作。以下三条语句在执行的时候均会报错:
SELECT tags.[tagid] FROM [tags],[tag_rss]
WHERE
tags.[tagid]
= tag_rss.[tagid](*);
SELECT tags.[tagid] FROM [tags],[tag_rss]
WHERE
LEFT OUTER
JOIN tag_rss.[tagid] = tags.[tagid];
SELECT tags.[tagid] FROM [tags],[tag_rss]
WHERE
LEFT JOIN
tag_rss.[tagid] = tags.[tagid];
此外经过测试用 号代替*号也是不可行的。
sqlite 和sql server 语法上的一些区别
@@IDENTITY LAST_INSERT_ROWID()
SELECT cn = COUNT(*) FROM ... SELECT COUNT(*) cn FROM ...
LIMIT startIndex,itemCn 这儿的startIndex 是从 0 开始的,而ROW_NUMBER()是从 1 开始的
sqlite 中没有SELECT TOP,用LIMIT 即可
SQLite 自增字段,如果在事务中插入数据失败,并不会占用增长后的id,而sql server 中对应的id 将无效
SQLite 中没有GETDATE 日期函数
SQLite 支持REPLACE INTO 语法,sql server 2008 中支持merge to
您可能关注的文档
最近下载
- SolidWorks入门教程很全面课件.ppt VIP
- [生理学]消化与吸收精选.ppt VIP
- 专题21.2 二次函数的图象【八大题型】(举一反三)(沪科版)(原卷版).docx VIP
- 第一章物质及其变化第一节物质的分类及转化(25张PPT)必修第一册.pptx VIP
- 某省2025年全省广播电视技术大赛(调幅专业) 试题 .pdf VIP
- 公路桥梁工程高处作业安全培训.pptx VIP
- PKPM软件说明书_筒仓结构设计软件SILO.pdf VIP
- Q OKTW 023-2016_汽车起重机 企业标准.pdf VIP
- 五年级数学(小数四则混合运算)计算题及答案汇编.docx VIP
- 【知识专讲精研】高中日语基础写作:-私の部屋课件.pptx VIP
文档评论(0)