今天很自然的在写Sql语句的时候用了Top,一开始没发现问题,因为我从数据库读出的值正好是0,而我习惯变量定义的时候也都赋值0,可是到我不要0的时候我就发现问题了。后来才知道,可爱的小sqlite竟然有不支持的sql语法。

  看到某个论坛有个新手也发现了这个问题并发帖了,下面一牛人的回复是“top是哪家的关键词?sqlite家没有这词的”,哈,原来top这词是mssql里才有的~

  最后还想说,数据库绝对是很重要的一块。我的基础语法很垃圾,过几天认真记录下。

  Google之下的结果:

1 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条

2 创建视图(Create View)
  SQLite在创建多表视图的时候有一个BUG,问题如下:
  CREATE VIEW watch_single AS SELECT DISTINCTwatch_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;
  但是随之而来的问题是如果是多表的视图,且表间有重名字段的时候该怎么办?

3 COUNT(DISTINCT column)
  SQLite在执行如下语句的时候会报错:
    SELECT COUNT(DISTINCT watchid) from [watch_item] WHERE watch_item.watchid = 1;
    其原因是SQLite的所有内置函数都不支持DISTINCT限定,所以如果要统计不重复的记录数的时候会出现一些麻烦。比较可行的做法是先建立一个不重复的记录表的视图,然后再对该视图进行计数。

4 外连接
  虽然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];
  此外经过测试用+号代替*号也是不可行的。


超越C++原创文章,转载请注明来源并保留原文链接

本文链接:http://www.beyondc.cn/sqlite-does-not-support-sql-syntax.html

SQLite中不支持的sql语法相关推荐

  1. 支持的sql语法_PostgreSQL 12 新特性解读之一|支持 SQL/JSON path

    作者介绍 谭峰,网名francs,<PostgreSQL实战>作者之一,<PostgreSQL 9 Administration Cookbook>译者之一,PostgreSQ ...

  2. mysql可以运行在不同sql mode模式下面,sql mode模式定义了mysql应该支持的sql语法,数据校验等...

    查看默认的sql mode模式: select @@sql_mode; 我的数据库是: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTI ...

  3. SQL 语法速成手册

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:静默虚空 排版:MarkerHub 原文:https://j ...

  4. 1.2W 字的 SQL 语法速成手册

    来源 |https://juejin.im/post/5c7e524af265da2d914db18f 本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理.本文内容包括 ...

  5. SQLite中的运算符表达式

    SQLite中的运算符表达式 在SQLite中,运算符包括了一元运算符,二元运算符(二进制运算符)和三元元素符.图3.12中给出了这些运算符需要的参数以及优先级.其中,一元运算符的优先级最高,三元运算 ...

  6. 语法手册_是真的猛!SQL 语法速成手册

    小Hub领读: 整理非常全面,原谅我书读得少,只能用一句卧槽来赞美了! 太赞了,SpringBoot+Vue前后端分离完整入门教程!​mp.weixin.qq.com 作者:静默虚空 原文:https ...

  7. 数据库:SQL 语法速成手册,建议新手收藏!

    本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理. 一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数 ...

  8. 语法手册_程序员必备——SQL语法速成手册

    一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数据表(table) - 某种特定类型数据的结构化清单. 模式(schema) - 关于 ...

  9. sql between的用法的意思_SQL 宝典——SQL 语法速成手册

    没有谁的生活会一直完美,但无论什么时候,都要看着前方,满怀希望就会所向披靡.--<撒野> 本文针对关系型数据库的一般语法.限于篇幅,本文侧重说明用法,不会展开讲解特性.原理. 一.基本概念 ...

最新文章

  1. [Python]Python操作/管理Mysql学习(一)
  2. 后疫情时代下,企业数字化转型之路如何走?
  3. 什么时候能用Δs判断反应进行方向_化学反应原理复习 第二章
  4. Intel Core Enhanced Core架构/微架构/流水线 (7) - 栈指针跟踪器/微熔合
  5. AS3 Signals之入门篇
  6. Java和C++的对照
  7. PDFLib9以上版本的去水印办法
  8. cad命令栏还原默认_cad命令栏怎么还原 【设置办法】
  9. 云科技网络验证源码_【原创】酸酸云科技-网络验证界面版注册机注入工具 V3.2...
  10. 5G网络切片的七种武器(六)
  11. rails中关于carrierwave、kaminari、roo组件分享
  12. vue端口号被占用报错npm ERR! @1.0.0 dev: `node build/dev-server.js`
  13. azkaban 安装
  14. 硕士生论文存在的问题
  15. 计算机网络ip地址划分计算机,计算机网络中IP地址大全
  16. numpy 学习汇总18.2 - 数学运算( 基础学习 tcy)
  17. [springboot]springboot启动流程
  18. win10电脑耳机有声音,外放没声音
  19. 记第一款游戏《大炮小兵》发布
  20. 牛客网——牛牛的通勤

热门文章

  1. db和model用哪个开发大型项目 thinkphp_Java程序员开发大型应用程序时,必须要掌握几个的技巧...
  2. Windows核心编程 第27章 硬件输入模型和局部输入状态
  3. hdu1337 水题
  4. 【数字信号处理】傅里叶变换性质 ( 序列对称分解定理示例 | 共轭对称序列与原序列之间的关系 | 共轭反对称序列与原序列之间的关系 )
  5. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile.java 对应的 dalvik_system_DexFile.cc 本地函数分析 )
  6. 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )
  7. 【Android 组件化】路由组件 ( 生成 Root 类记录模块中的路由表 )
  8. 【OpenGL】二十四、OpenGL 纹理贴图 ( 读取文件内容 | 桌面程序添加控制台窗口 | ‘fopen‘: This function may be unsafe 错误处理 )
  9. nginx--之静态服务器
  10. git锁和钩子以及图形化界面